Rails Paperclip S3 - 缺少必需的 :bucket 选项

4

我正在尝试使用Amazon S3作为Paperclip附件。首先,我正在尝试在我的iMac开发环境中使其工作。

我已经创建了Amazon桶=ndeavor-dev和ndeavor-pro。在下面的代码中,我替换了存储桶名称和密钥。我有gem的paperclipaws-sdk

我得到的错误是:

ArgumentError at /attachments
missing required :bucket option

我已经在我的config/environments/development.rb文件中尝试了这个方法:
  config.paperclip_defaults = {
    :storage => :s3,
    :s3_protocol => 'http',
    :bucket => ENV['AWS_BUCKET'],
    :s3_credentials => {
      :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
      :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
    }
  }

我尝试了这个方法(将 :bucket 移动):

  config.paperclip_defaults = {
    :storage => :s3,
    :s3_protocol => 'http',
    :s3_credentials => {
      :bucket => ENV['AWS_BUCKET'],
      :access_key_id => ENV['AWS_ACCESS_KEY_ID'],
      :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
    }
  }

感谢您的帮助!

ENV['AWS_BUCKET'] 是否被正确设置了呢? - dcro
实际上是 :bucket => ENV['ndeavor-dev'] - Reddirt
1个回答

4

正如dcro所说,您需要正确设置AWS_BUCKET环境变量。

要做到这一点,请在config/application.yml中创建一个文件,并使用您的Amazon凭据将以下内容放入其中:

AWS_ACCESS_KEY_ID: "whatever_the_key_is"
AWS_SECRET_ACCESS_KEY: "whatever_the_secret_is"
AWS_BUCKET: "ndeavor-dev"

然后重新启动您的服务器。接下来,您就可以像这样使用您的模型:
 has_attached_file :attachment                                                                 ,
                      :storage        => :s3                                                 ,
                      :s3_credentials => {:bucket            => ENV['AWS_BUCKET'           ],
                                          :access_key_id     => ENV['AWS_ACCESS_KEY_ID'    ],
                                          :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']},
                      :s3_protocol    => "https"                                             ,
                      :s3_host_name   => "s3-eu-west-1.amazonaws.com"                        

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接