执行 Rails 命令(迁移等)时的 ENV 变量



使用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 控制台上。我认为由于某种原因,轨道由于某种原因无法访问我的 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

不是上述问题的答案,但OP再次询问任何建议。

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

关于如何使用机密的非常简短、简洁的演练:

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

最新更新