使用Paperclip和Amazon S3的CKEditor gem

时间:2012-05-31 19:38:46

标签: ruby-on-rails amazon-s3 paperclip ckeditor

我正在使用CKEditor,我已将其配置为使用Paperclip,但我不能告诉它在S3中存储文件,因此它使用Paperclip存储它们,但是在本地文件系统上。

所以我想知道是否有某种方法告诉Paperclip每次使用时都明确使用S3。

我知道如何在某些型号上配置带有S3的Paperclip(非常简单,在paperclip github wiki上有描述)。我正在Heroku上部署,这就是我无法写入本地文件系统的原因。

3 个答案:

答案 0 :(得分:5)

一种方法是查看ckeditor安装生成器正在做什么。 例如,如果将ActiveRecord用作ORM,请查看用于使用Paperclip here的模型的模板。

生成器实际上将此模板复制到app / models / ckeditor文件夹中。您可以编辑它们并根据需要配置Paperclip以使用S3。

对于ActiveRecord,模型是:

/app/models/ckeditor/attachment_file.rb
/app/models/ckeditor/picture.rb

请记住,如果更新ckeditor gem并且更新过程需要覆盖此模型,这种方法将来可以为您提供额外的工作。

否则,您可以使用Paperclip默认选项。在您的Paperclip初始化程序(/config/initializers/paperclip.rb)中使用:

Paperclip::Attachment.default_options.merge!(
    YOUR OPTIONS FOR S3 HERE
) 

答案 1 :(得分:1)

对于carrierwave,您可以生成上传器,在那里您可以配置您的s3或任何您想要的。

class CkeditorAttachmentFileUploader < CarrierWave::Uploader::Base
  include Ckeditor::Backend::CarrierWave
  # Choose what kind of storage to use for this uploader:
  if Rails.env.production?
    storage :fog
  else
    storage :file
  end
....
end

答案 2 :(得分:-1)

这很直截了当。您可以使用this post来帮助您入门。或者,您可以查看this similar question了解更多详情。