代码之家  ›  专栏  ›  技术社区  ›  Paul Harker

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

  •  0
  • Paul Harker  · 技术社区  · 6 年前

    使用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服务器的一部分运行时。。。

    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 回复  |  直到 6 年前
        1
  •  0
  •   Mark    6 年前

    不是对上述问题的回答,但由于OP再次要求提供任何建议。。

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

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