2.8未使用“config. conf”.paperclip_defaults的散列



由于某种原因,我无法让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_KEYS3_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哈希中获取默认值。

最新更新