我正在使用CKEditor,我已经配置它与回形针一起工作,但我不能告诉它存储在S3中的文件,所以它存储它们使用Paperclip,但在本地文件系统。CKEditor宝石与回形针和亚马逊S3
所以我想知道是否有某种方法可以让Paperclip在每次使用S3时明确使用S3。
我知道如何在某些模型上使用S3配置Paperclip(很简单,在paperclip github wiki上描述)。我在Heroku上部署,这就是为什么我不能写入本地文件系统。
我正在使用CKEditor,我已经配置它与回形针一起工作,但我不能告诉它存储在S3中的文件,所以它存储它们使用Paperclip,但在本地文件系统。CKEditor宝石与回形针和亚马逊S3
所以我想知道是否有某种方法可以让Paperclip在每次使用S3时明确使用S3。
我知道如何在某些模型上使用S3配置Paperclip(很简单,在paperclip github wiki上描述)。我在Heroku上部署,这就是为什么我不能写入本地文件系统。
一种方法是查看ckeditor安装生成器正在做什么。 例如,如果使用ActiveRecord作为ORM,请查看使用Paperclip here的模型所使用的模板。
生成器实际上将此模板复制到您的应用程序/ models/ckeditor文件夹中。您可以编辑它们并根据需要配置Paperclip以使用S3。
ActiveRecord的,型号是:
/app/models/ckeditor/attachment_file.rb
/app/models/ckeditor/picture.rb
请记住,如果CKEditor的宝石被更新,更新过程中需要覆盖此模型这种方法可以让你在未来的额外工作。
否则,您可以使用Paperclip默认选项。在您回形针初始化(/config/initializers/paperclip.rb)使用方法:
Paperclip::Attachment.default_options.merge!(
YOUR OPTIONS FOR S3 HERE
)
这很简单。您可以使用this post来开始。或者,您可以查看this similar question了解更多详情。
我已经知道这一点,但这是为了使用S3与ActiveRecord模型。我的情况不同。没有底层模型。这是一个带内容属性的Post模型,在这个内容中,用户应该能够插入随机图片,所以它们与数据库表列或其他内容无关。 – Agis
对于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
您使用的是什么ORM? ActiveRecord的? – Christian
是的(抱歉只看到这个问题)。 – Agis