Rails在推送到heroku之前无法获取Amazon AWS S3本地预编译?
问题描述:
我有一个与heroku和我的样式表不能在部署上工作的问题,它说要尝试和本地预编译,然后将其提交给git然后推送。我做bundle exec rails assets:precompile RAILS_ENV=production
。 在试图做到这一点,我得到错误;Rails在推送到heroku之前无法获取Amazon AWS S3本地预编译?
完整曲线
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本地瓦尔所以你可以预编译的一切在本地,我已经做了,在我的轨道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
林不知道我在做什么错?请帮忙。
答
我以为我会发布一个答案在这个incase任何一个未来需要它。使用在CMD窗口线,
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添加所有内容并进行部署。
你确定你已经在Heroku上设置了S3_ACCESS_KEY作为environmet变量吗? – Maxence
嗨。是的,一切都设置在heroku正确,我刚刚发现我的问题,当本地编译亚马逊说,例如'设置AWS_ACCESS_KEY_ID = your_access_key_id',这样而不是'S3_ACCESS_KEY'在carrier_wave.rb我需要'AWS_ACCESS_KEY_ID'而不是,其余的同样适用于其余但设置斗我仍然搞清楚:D –
好吧,现在好了。设置桶只是'AWS_BUCKET'。 –