错误上传文件到S3:缺少必需:桶选项

问题描述:

我试图上传数据到s3使用回形针。我不断收到以下错误错误上传文件到S3:缺少必需:桶选项

缺少必需的:斗选项

应用程序/控制器/ documents_controller.rb:64:在block in update' app/controllers/documents_controller.rb:63:in更新”

我已经更新我的配置/环境/发展.rb具有适当的s3凭证。在本地运行我的应用程序时出现此错误,尚未在Heroku上尝试过。 任何建议我还缺少什么?

document.rb

class Document < ActiveRecord::Base 
    attr_accessible :documentId, :name, :docstack 

    has_attached_file :docstack, styles: { 
    thumb: '200x200', 
    medium: '33x300>' 
    } 
end 

development.rb

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

UPDATE: 参考this博客 感谢

你定义了ENV变量值吗?

尝试添加该文件,

# /config/initializers/env.rb 

ENV['s3_bucket'] = 'XXX' 
ENV['s3_access_key_id'] = 'XXX' 
ENV['s3_secret_access_key'] = 'XXX' 

与此代码development.rb文件,

# /config/environments/development.rb 

config.paperclip_defaults = { 
    :storage => :s3, 
    :s3_credentials => { 
    :bucket => ENV['s3_bucket'], 
    :access_key_id => ENV['s3_access_key_id'], 
    :secret_access_key => ENV['s3_secret_access_key'] 
    } 
} 

然后添加env.rb.gitignore文件,使您的凭据未存储在GIT,

# /.gitignore 

/config/initializers/env.rb 
+0

我已经将aws凭证添加到了development.rb。我没有看到我的初始化文件夹中的env.rb。 – jsp 2013-03-24 19:24:10

+0

您需要创建'env.rb',因为它还不存在。 'env.rb'文件设置ENV ['s3_bucket']','ENV ['s3_access_key_id']'和ENV ['s3_secret_access_key']'的值。您将用您的凭证替换“XXX”值。目前你的凭证是否看起来像这个':bucket => ENV ['my_bucket']'或这个':bucket =>'my_bucket'? – Sam 2013-03-24 20:49:27

+0

没有帮助..或者 – jsp 2013-03-24 21:10:21

我遇到了类似的问题之前lem和看到相同的错误信息。一定要检查rails控制台是否正确设置了ENV变量(“$ ENV ['AWS_BUCKET']”)。尽管正确导出env变量,我的一个返回零。重新启动终端后,它按预期工作。