以下是我尝试通过实际网站上传图片时出现的错误:
ArgumentError (missing required :bucket option):
app/controllers/editions_controller.rb:53:in `block in create'
app/controllers/editions_controller.rb:52:in `create'
我有最新版本的aws-sdk
和paperclip
我在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
有人能说明为什么这不起作用吗?感谢。
答案 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进程。
尝试这些更改,让我知道它们是如何运作的。祝你好运。