【发布时间】:2018-03-25 10:58:30
【问题描述】:
我遇到了 heroku 的问题,我的样式表在部署时不起作用,它说尝试在本地预编译,然后将其提交给 git,然后推送。我做bundle exec rails assets:precompile RAILS_ENV=production。
在尝试执行此操作时出现错误;
完整跟踪
C:\Sites\Peoples_Profiles>bundle exec rails assets:precompile RAILS_ENV=production --trace
** Invoke assets:precompile (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke environment (first_time)
** Execute environment
rails aborted!
KeyError: key not found: "S3_ACCESS_KEY"
C:/Sites/Peoples_Profiles/config/initializers/carrier_wave.rb:6:in `fetch'
C:/Sites/Peoples_Profiles/config/initializers/carrier_wave.rb:6:in `block in <top (required)>'
C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/carrierwave-0.11.2/lib/carrierwave/uploader/configuration.rb:118:in `configure'
C:/RailsInstaller/Ruby2.2.0/lib/ruby/gems/2.2.0/gems/carrierwave-0.11.2/lib/carrierwave.rb:14:in `configure'
C:/Sites/Peoples_Profiles/config/initializers/carrier_wave.rb:2:in `<top (required)>'
...
here 在亚马逊网站上,它说明了如何在本地设置 ENV 变量,以便您可以在本地预编译我所做的所有内容,并在我的 rails ENV 中列出它们
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
我正在使用carrierwave 进行图像处理,并在我的初始化程序中正确设置了所有内容
carrier_wave.rb
if Rails.env.production?
CarrierWave.configure do |config|
config.aws_credentials = {
# Configuration for Amazon S3
access_key_id: ENV.fetch('S3_ACCESS_KEY'),
secret_access_key: ENV.fetch('S3_SECRET_KEY'),
region: ENV.fetch('S3_REGION') # Required
}
config.storage = :aws
config.aws_bucket = ENV.fetch('S3_BUCKET')
end
end
我不确定我做错了什么?请帮忙。
【问题讨论】:
-
您能否确认您已在 Heroku 上将 S3_ACCESS_KEY 设置为环境变量?
-
嗨。是的,一切都正确设置在heroku,我只是在本地编译时发现了我的问题,例如亚马逊说
set AWS_ACCESS_KEY_ID=your_access_key_id,所以我需要AWS_ACCESS_KEY_ID而不是carrier_wave.rb中的S3_ACCESS_KEY,其余部分也是如此,但设置桶我还在弄清楚:D -
好的,现在一切都好。设置桶只是
AWS_BUCKET。
标签: ruby-on-rails amazon-web-services heroku amazon-s3 carrierwave