0

这是我尝试通过实时站点上传图像时遇到的错误:

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 应用程序上设置了 AWS_BUCKET:

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

任何人都可以建议为什么这不起作用?谢谢。

4

1 回答 1

1

你有:

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

我一直被告知你应该像这样大写常量:

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

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

AWS_BUCKET:                bucket_name

但是,如果您的环境变量被称为 BUCKET_NAME,那么您需要以下内容:

BUCKET_NAME:                bucket_name

所以从命令行你想要运行类似的东西heroku config:set BUCKET_NAME=bucket_name

最后,您已将环境变量的名称与回形针自述文件中建议的名称进行了更改。当其他人都使用 ENV['AWS_BUCKET'] 时,你已经使用了 ENV['BUCKET_NAME']。我不知道这是否会产生任何影响,但请尝试使用heroku在此处概述的过程。

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

于 2013-06-01T17:15:47.093 回答