未找到Rails 5(AWS Amazon)S3_BUCKET_NAME密钥

时间:2017-03-20 20:27:11

标签: ruby-on-rails amazon-web-services

我知道很多人已经遇到过这个问题,但要么他们的解决方案对我不起作用,要么我们不在生产的同一阶段。我做了大量的谷歌搜索,但没有任何帮助。

这是我的.env课程:

S3_BUCKET_NAME=
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCES_KEY=
AWS_REGION

当我传入我应该传入的值并转到rails c并输入ENV.fetch('S3_BUCKET_NAME')时,我会收到此错误

enter image description here

我还尝试在require "dotenv-rails"中添加application.rb,但在这种情况下,我甚至无法启动控制台。

如果有人有任何想法,那将会有很大的帮助:)

这是我运行控制台时发生的事情

enter image description here

2 个答案:

答案 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'