回形针:从yml使用错误的存储桶

时间:2013-06-19 17:18:36

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

这之前已经奏效,或者我相信。

出于某种原因,在我的开发环境甚至是暂存期间,Paperclip正在使用我的生产桶而不是开发桶。

以下是与之相关的用户模型部分

has_attached_file :avatar,
                    storage: :s3,
                    s3_credentials: "#{Rails.root}/config/s3.yml",
                    s3_permissions: :private,
                    path: "/:style/:id/:filename",
                    s3_protocol: "https",
                    styles: { medium: "300x300#", thumb: "100x100#", icon: "26x26#" },
                    default_url: ":style/ico_missing_user.png"

在这里,我的yml文件:

common: &common
  access_key_id: <%= ENV['S3_KEY'] %>
  secret_access_key: <%= ENV['S3_SECRET'] %>

development:
  <<: *common
  bucket: mydevbucket

staging:
  <<: *common
  bucket: mystagingbucket

production:
  <<: *common
  bucket: myprodbucket

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我将“load_config.rb”文件添加到初始化程序目录:

load_config.rb

S3_CONFIG = YAML.load_file("#{::Rails.root}/config/s3.yml")[Rails.env]

并开始使用S3_CONFIG而不是"#{Rails.root}/config/s3.yml"

has_attached_file :avatar,
                    storage: :s3,
                    s3_credentials: S3_CONFIG,
                    s3_permissions: :private,
                    path: "/:style/:id/:filename",
                    s3_protocol: "https",
                    styles: { medium: "300x300#", thumb: "100x100#", icon: "26x26#" },
                    default_url: ":style/ico_missing_user.png"

上面的解决方案可以很好地设置存储桶,但是在上传文件时我开始遇到回形针问题,说ECONN:Aborted。

以下是我理解的工作:

  has_attached_file :avatar,
                    storage: :s3,
                    :s3_credentials => "#{Rails.root}/config/s3.yml",
                    :bucket => ENV['S3_BUCKET'],
                    s3_permissions: :private,
                    path: "/:style/:id/:filename",
                    s3_protocol: "https",
                    styles: { medium: "300x300#", thumb: "100x100#", icon: "26x26#" },
                    default_url: ":style/ico_missing_user.png"

注意我将存储桶与凭据分开。我在回形针的rdocs以及以下sample

上启发了这个