【发布时间】:2013-08-25 15:28:03
【问题描述】:
一切都在本地按预期工作。一旦我推送到heroku,我就无法再上传图片了。
我从 heroku 日志中得到的错误代码是:
Excon::Errors::Forbidden (Expected(200) <=> Actual(403 Forbidden)
XML 响应包含:<Code>AccessDenied</Code><Message>Access Denied</Message>
我的fog.rb:
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS',
:aws_access_key_id => ENV["ACCESS_KEY_ID"],
:aws_secret_access_key => ENV["SECRET_ACCESS_KEY"]
#:region => 'eu-west-1'
}
#Required for Heroku
config.cache_dir = "#{Rails.root}/tmp/uploads"
config.fog_directory = ENV["BUCKET_NAME"]
end
我的上传者:
class ImageUploader < CarrierWave::Uploader::Base
storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
Heroku 具有正确的环境变量 - 我使用了 figaro gem。在前几次得到 403 后,我还手动设置了它们,以确保 figaro 没有错误。
我认为这可能是该地区的问题,但我的存储桶是美国,并且载波文档说默认是 us-east-1
是什么导致 Heroku 出现问题,但不是本地问题?
【问题讨论】:
标签: ruby-on-rails heroku amazon-s3 carrierwave fog