执行Rails命令时的ENV变量(迁移,其他)

时间:2018-10-04 11:01:06

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

使用Carrierwave和fog以及一切都可以在AWS上正常工作,但是当我尝试进行迁移和其他一些rails命令时,我得到了:

lib/fog/core/service.rb:244:in validate_options: Missing required arguments: aws_access_key_id, aws_secret_access_key (ArgumentError)

Rails控制台也会发生这种情况。我认为出于某种原因,rails无法访问我的ENV变量?但是当作为Rails服务器的一部分运行时,它可以工作...

对为什么有任何想法? AWS键定义如下:

CarrierWave.configure do |config|

  config.fog_provider = 'fog/aws'
  config.fog_credentials = {

    provider: 'AWS',
    aws_access_key_id: ENV['AWS_ACCESS_KEY'],
    aws_secret_access_key: ENV['AWS_SECRET'],
    region: 'eu-west-2'
  }
  config.fog_directory = 'images' # bucket name


  config.cache_dir = "#{Rails.root}/tmp/uploads" # To let CarrierWave work on heroku
end

1 个答案:

答案 0 :(得分:0)

不是上述问题的答案,而是OP再次要求提供任何建议。

在开发中停止使用ENV变量。创建一个secrets.yml文件,您将可以在项目中访问这些值。确保将其添加到您的.gitignore文件中,因为提交它显然不是一个好主意。

关于如何使用机密的简短摘要:

https://richonrails.com/articles/the-rails-4-1-secrets-yml-file