我知道很多人已经遇到过这个问题,但要么他们的解决方案对我不起作用,要么我们不在生产的同一阶段。我做了大量的谷歌搜索,但没有任何帮助。
这是我的.env课程:
S3_BUCKET_NAME=
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCES_KEY=
AWS_REGION
当我传入我应该传入的值并转到rails c
并输入ENV.fetch('S3_BUCKET_NAME')
时,我会收到此错误
我还尝试在require "dotenv-rails"
中添加application.rb
,但在这种情况下,我甚至无法启动控制台。
如果有人有任何想法,那将会有很大的帮助:)
这是我运行控制台时发生的事情
答案 0 :(得分:1)
"找不到钥匙"表示S3_BUCKET_NAME没有值,因此如果您使用ENV变量,则需要在环境中设置它们,例如我在生产中使用此文件:
if Rails.env.production?
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS',
:aws_access_key_id => ENV['S3_ACCESS_KEY'],
:aws_secret_access_key => ENV['S3_SECRET_KEY']
}
config.fog_directory = ENV['S3_BUCKET']
end
end
通过这种方式,您可以通过终端设置变量,而不会出现任何错误,例如: heroku config:设置S3_BUCKET = name_of_my_bucket
答案 1 :(得分:0)
谢谢你的回答。
我之前设法解决了这个问题,我想问题是这个新版本的gem dotenv
的应用方式略有不同。
或者至少它只是在我的情况下。我无法在"dotenv-rails"
文件中要求application.rb
,但当我将GEMFILE
与gem本身一起放入时,它们编译得很好。
这条线解决了它:
gem 'dotenv-rails', require: 'dotenv/rails-now'