Paperclip / heroku / S3配置设置尽可能好,但上传时出错

时间:2013-06-01 16:38:18

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

以下是我尝试通过实际网站上传图片时出现的错误:

ArgumentError (missing required :bucket option):
   app/controllers/editions_controller.rb:53:in `block in create'
   app/controllers/editions_controller.rb:52:in `create'

我有最新版本的aws-sdkpaperclip

我在production.rb中有以下内容

config.paperclip_defaults = {
  :storage => :s3,
  :s3_credentials => {
    :bucket => ENV['bucket_name'],
    :access_key_id => ENV['key'],
    :secret_access_key => ENV['key2']
  }

我在我的heroku app上设置了AWS_BUCKET:

AWS_BUCKET:                bucket_name
S3_BUCKET_NAME:            bucket_name
AWS_ACCESS_KEY_ID:         key 
AWS_SECRET_ACCESS_KEY:     key2

有人能说明为什么这不起作用吗?感谢。

1 个答案:

答案 0 :(得分:1)

你有:

:s3_credentials => {
  :bucket => ENV['bucket_name']
}

我总是被告知你应该像这样大写常量:

:s3_credentials => {
  :bucket => ENV['BUCKET_NAME']
}

此外,您还没有在heroku上实际设置一个名为BUCKET_NAME的ENV变量,您有以下内容:

AWS_BUCKET:                bucket_name

但是如果你的env var被称为BUCKET_NAME,那么你需要以下代码:

BUCKET_NAME:                bucket_name

因此,从commane行开始,您需要运行类似heroku config:set BUCKET_NAME=bucket_name

的内容

最后,您已经从回形针自述文件中建议更改了env变量的名称。当其他人都使用ENV ['AWS_BUCKET']时,你已经使用了ENV ['BUCKET_NAME']。我不知道如果这会影响任何事情,但请尝试使用heroku概述的here进程。

尝试这些更改,让我知道它们是如何运作的。祝你好运。