Rails,无法让 Amazon AWS S3 在推送到 heroku 之前在本地预编译?

Rails, cannot get Amazon AWS S3 to precompile locally before push to heroku?

我遇到了 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=... 

我正在使用载波处理我的图像,并且在我的初始化程序中正确设置了所有内容

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

我不确定我做错了什么?请帮忙。

我想我会 post 回答这个问题,以防将来有人需要它。在 cmd 行中用于 windows,

set AWS_ACCESS_KEY_ID=your_access_key_id_here
set AWS_SECRET_ACCESS_KEY=...
set AWS_REGION=...
set AWS_BUCKET=...

将在本地设置您的 ENV 变量,以便您进行编译。在您的 carrier_wave.rb 中设置这些,例如 S3_ACCESS_KEY 变为 AWS_ACCESS_KEY_ID 等。编译所有内容以用于生产。然后将 carrier_wave.rb 中的所有内容改回 S3_ACCESS_KEY 等。然后使用 git 添加所有内容并部署。

编辑 只需简单地使用 set S3_ACCESS_KEY=djkhaskdhfaskdjhf 等等等等