由于某种原因,我无法让Paperclip正确使用S3。我已经按照文档所说的那样配置了它,但是我的所有环境仍然使用public/system
目录来存储文件。
这是我的配置:
# config/application.rb
config.paperclip_defaults = {
:default_url => "/assets/:attachment/default/:style.jpg",
:storage => :s3,
:s3_protocol => 'https',
:s3_credentials => {
:access_key_id => ENV['S3_KEY'],
:secret_access_key => ENV['S3_SECRET']
},
:bucket => ENV['S3_BUCKET'],
:path => "/:attachment/:id/:style.:extension",
:styles => {
:giant => ["600x600>"],
:huge => ["450x450>"],
:large => ["300x300>"],
:medium => ["200x200>"],
:small => ["100x100>"],
:thumb => ["48x48>"],
:profile => ["34x34>"],
:mini => ["24x24>"]
}
}
我已经确认application.yml
中所有桶的名称都正确,S3_KEY
和S3_SECRET
也都正确。
我使用gem "paperclip", "~> 2.8"
,因为这是一个较老的项目,我们不担心更新。
我现在意识到,以前的开发人员将回形针版本从~> 3.1
更改为~> 2.8
,以便在移交项目之前清除一些依赖问题…然而,在他把它交给我之前,它实际上是正确的,他从来不知道它打乱了配置。版本2.8不像3.0那样设置全局默认值,所以config.paperclip_defaults
在我的版本中显然是没有意义的。
相反,我已经更新了我的application.rb
文件,以设置Paperclip::Attachment.default_options
哈希值的默认值:
# config/application.rb
Paperclip::Attachment.default_options[:default_url] = "/assets/:attachment/default/:style.jpg"
Paperclip::Attachment.default_options[:storage] = :s3
Paperclip::Attachment.default_options[:s3_protocol] = 'https'
Paperclip::Attachment.default_options[:s3_credentials] = {
:access_key_id => ENV['S3_KEY'],
:secret_access_key => ENV['S3_SECRET']
}
Paperclip::Attachment.default_options[:bucket] = ENV['S3_BUCKET'],
Paperclip::Attachment.default_options[:path] = "/:attachment/:id/:style.:extension",
Paperclip::Attachment.default_options[:styles] => {
:giant => ["600x600>"],
:huge => ["450x450>"],
:large => ["300x300>"],
:medium => ["200x200>"],
:small => ["100x100>"],
:thumb => ["48x48>"],
:profile => ["34x34>"],
:mini => ["24x24>"]
}
标题>正如我的问题所指出的,gem "paperclip", "~> 2.8"
不响应config.paperclip_defaults
哈希,而是从Paperclip::Attachment.default_options
哈希中获取默认值。