我正在使用带有S3斗的carriervawe和雾。我使用以下代码在开发中获得标题中的错误(当我运行rails s
或rake db:migrate
时):
CarrierWave.configure do |config|
config.fog_credentials = {
provider: "AWS",
aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
}
config.asset_host = "http://xxx.cloudfront.net"
config.fog_directory = 'xxx'
config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}
config.storage = :fog
end
我也尝试过使用(如建议here)
<%= ENV['AWS_ACCESS_KEY_ID'] %>
但是我收到了这个错误:
syntax error, unexpected '<' (SyntaxError)
我的变量在application.yml文件中
AWS_ACCESS_KEY_ID: AKIAIxxx...
AWS_SECRET_ACCESS_KEY: 1xxx...
答案 0 :(得分:4)
不确定原因,但由于某种原因,您的环境变量可能被评估为nil。我喜欢使用figaro gem来管理我的环境变量。
只需添加
gem "figaro"
到您的gemfile。
然后运行
figaro install
将创建一个application.yml文件并将其添加到.gitignore中(出于安全原因非常重要)。在此之后,您应该能够将您的AWS密钥添加到application.yml,并像您当前拥有的那样在您的carrierwave配置中访问它们。
答案 1 :(得分:0)
如果这是来自Michael Hartl教程,我通过将初始化程序重命名为carrierwave.rb而不是carrier_wave.rb来解决我的问题,如教程中所建议的那样。然后我重新运行了git和Heroku命令,它在Heroku生产服务器上运行。