2015-06-29 4 views
0

Я попытался добавить редактор в свое приложение rails, используя amazons3 и paperclip, но im с ошибками. Если я не могу заставить это работать, какие другие редакторы будут доступны, которые будут работать? Вот ошибка, которую я получил ниже«Отсутствует обязательный параметр: bucket option» для Paperclip/S3/Ckeditor

ArgumentError in Ckeditor::PicturesController#create 
missing required :bucket option 

Extracted source (around line #218): 
216 
217 
218 
219 
220 
221 

     @bucket = @options[:bucket] || s3_credentials[:bucket] 
     @bucket = @bucket.call(self) if @bucket.respond_to?(:call) 
     @bucket or raise ArgumentError, "missing required :bucket option" 
     end 

     def s3_interface 

Я не уверен, что делать, следуя этим шагам.

gem 'paperclip' 
gem 'ckeditor' 

затем в комплект

rails generate ckeditor:install --orm=active_record --backend=paperclip 

реки мигрировали

mount Ckeditor::Engine => "/ckeditor" 

добавил этот application.js

//= require ckeditor/init 

добавила это к странице просмотра

<%= f.cktext_area :content, :class => "form-control" %> 

Эти файлы создаются и их конфигурация

/Ckeditor/Picture.rb

class Ckeditor::Picture < Ckeditor::Asset 
    has_attached_file :data, 
        :url => ":s3_domain_url", 
        :path =>   "/:class/:attachment/:id_partition/:style/:filename", 
        :styles => { :content => '800>', :thumb => '118x100#' } 

    validates_attachment_presence :data 
    validates_attachment_size :data, :less_than => 2.megabytes 
    validates_attachment_content_type :data, :content_type => /\Aimage/ 

    def url_content 
    url(:content) 
    end 
end 

/Ckeditor/attachment_file.rb

class Ckeditor::AttachmentFile < Ckeditor::Asset 
    has_attached_file :data, 
        :url => "/ckeditor_assets/attachments/:id/:filename", 
        :path => ":rails_root/public/ckeditor_assets/attachments/:id/:filename" 

    validates_attachment_presence :data 
    validates_attachment_size :data, :less_than => 100.megabytes 
    do_not_validate_attachment_file_type :data 

    def url_thumb 
    @url_thumb ||= Ckeditor::Utils.filethumb(filename) 
    end 
end 

/Ckeditor/asset.rb

class Ckeditor::Asset < ActiveRecord::Base 
    include Ckeditor::Orm::ActiveRecord::AssetBase 
    include Ckeditor::Backend::Paperclip 
end 

Я использую эти строки кода в development.rb и production.rb и у меня не было никаких проблем с скрепкой до с s3.

config.paperclip_defaults = { 
:storage => :s3, 
:s3_protocol => 'http', 
:bucket => ENV['AWS_BUCKET'], 
:s3_credentials => { 
    :access_key_id => ENV['AWS_ACCESS_KEY_ID'], 
    :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'] 
} 
    } 

Это paperclip.rb файл

Paperclip::Attachment.default_options[:url] = ':s3_domain_url' 
Paperclip::Attachment.default_options[:path] = '/:class/:attachment/:id_partition/:style/:filename' 

ответ

1

Я предполагаю, что развертывается в Heroku. Таким образом, вы должны установить переменную окружения Heroku для переменной ковшом s3:

heroku config:set S3_BUCKET_NAME='Your Bucket Name' 
heroku config:set AWS_ACCESS_KEY_ID='Your AWS ID' 
heroku config:set AWS_SECRET_ACCESS_KEY='Your AWS Secrete Key' 

Если вы в развитии (локальный), необходимо определить эти переменные. В противном случае удалите код конфигурации из development.rb

+0

Я не использовал это, но я получил его для работы с использованием другого метода. Проблема в том, что изображения загружаются, я проверял, но не показываю – JamesRocky

+0

Только один раз. Но если вы находитесь в среде разработки, возможно, вы потеряли переменные при перезагрузке машины. Для тестирования попробуйте заменить ENV вашими учетными данными. (Только для теста, это не рекомендованная безопасность практика) –

+0

Вы тестируете в герою или на местном уровне? –

Смежные вопросы