我在Heroku上,这是一个投资组合的东西,我正在github上为潜在的雇主看,所以显然我不想把我的密钥放在S3.yml文件中。我已经在Heroku和我的机器上将S3_KEY和S3_SECRET导出到我的环境中,ruby可以访问它们。但是当我尝试上传时,它会给我以下错误:
AWS::S3::MissingAccessKey in Portfolio itemsController#update
You did not provide both required access keys. Please provide the access_key_id and the secret_access_key.
除了我的控制器行#之外,跟踪无关紧要,直到我尝试上传文件才能正常工作。这就是我所拥有的:
class Asset < ActiveRecord::Base
attr_accessible :image, :image_file_name, :image_content_type, :image_file_size, :portfolio_item_id, :order
has_attached_file :image,
:styles => {
:thumb => "100x100#",
:small => "300x300",
:large => "600x600>"
},
:storage => :s3,
:s3_credentials => {
:access_key_id => ENV["S3_KEY"],
:secret_access_key => ENV["S3_SECRET"]
},
:bucket => "bucketybucket",
:path => "portfolio"
end
任何人都知道这里发生了什么?我如何构造这个哈希错误?
哦,我跟着这个帖子,没有骰子:Paperclip and Amazon S3 Issue
答案 0 :(得分:1)
同样的问题......
似乎在加载模块之前没有加载ENV const。通过使用file参数解决 像这样
:s3_credentials => Rails.root.join('config/amazon_s3.yml')
和amazon_s3.yml
access_key_id: 'your_key'
secret_access_key: 'your_sec_key'
bucket: 'somebucket'
此外,您可以使用 heroku config:add 命令设置环境变量,该命令在Heroku DevCenter中描述
答案 1 :(得分:0)
问题是因为heroku中的Environment变量与系统中的环境变量不同,因此应用程序可能只在一个环境中工作