我正在使用 CKEditor,并且已将其配置为与 Paperclip 一起使用,但我无法告诉它将文件存储在 S3 中,因此它使用 Paperclip 但将它们存储在本地文件系统上。
所以我想知道是否有某种方法可以告诉 Paperclip 每次使用时都明确使用 S3。
我知道如何在某些型号上使用 S3 配置 Paperclip(很简单,在回形针 github wiki 上进行了描述)。我正在 Heroku 上进行部署,这就是为什么我无法写入本地文件系统。
我正在使用 CKEditor,并且已将其配置为与 Paperclip 一起使用,但我无法告诉它将文件存储在 S3 中,因此它使用 Paperclip 但将它们存储在本地文件系统上。
所以我想知道是否有某种方法可以告诉 Paperclip 每次使用时都明确使用 S3。
我知道如何在某些型号上使用 S3 配置 Paperclip(很简单,在回形针 github wiki 上进行了描述)。我正在 Heroku 上进行部署,这就是为什么我无法写入本地文件系统。
一种方法是查看 ckeditor 安装生成器在做什么。例如,如果使用 ActiveRecord 作为 ORM,请在此处查看用于使用 Paperclip 的模型的模板。
生成器实际上将此模板复制到您的 app/models/ckeditor 文件夹中。您可以编辑它们并根据需要进行配置,以便 Paperclip 使用 S3。
对于 ActiveRecord,模型是:
/app/models/ckeditor/attachment_file.rb
/app/models/ckeditor/picture.rb
请记住,如果更新 ckeditor gem 并且更新过程需要覆盖此模型,则此方法可能会在将来为您提供额外的工作。
否则,您可以使用 Paperclip 默认选项。在您的回形针初始化程序(/config/initializers/paperclip.rb)中使用:
Paperclip::Attachment.default_options.merge!(
YOUR OPTIONS FOR S3 HERE
)
对于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