无法使用[Rails.env]访问:开发或:生产凭据

时间:2018-05-11 19:53:49

标签: amazon-s3 credentials ruby-on-rails-5.2

我正在将应用升级到Rails 5.2.0并尝试创建credentials.yml.enc文件,以便我可以访问:aws:development环境中的其他:production广告管理

我关注this tutorial

我的credentials.yml.enc

development:
  aws:
    access_key_id: 123dev
    secret_access_key: 345dev
    bucket: development_bucket

production:
  aws:
    access_key_id: 123pr
    secret_access_key: 345pr
    bucket: production_bucket

aws:
  access_key_id: long_hexidecimal_string
  secret_access_key: longer_hexidecimal_string

在控制台中,如果我输入Rails.application.credentials[:aws][:access_key_id],那么我会得到预期的输出:long_hexidecimal_string

但是当我输入Rails.application.credentials[Rails.env][:aws][:access_key_id]时,我收到此错误:NoMethodError: undefined method []' for nil:NilClass

测试是否有问题出在yml文件中,我尝试了这个并得到了预期的结果:

irb(main):015:0> Rails.application.credentials[:development][:aws][:access_key_id]
=> "123dev" 

我认为问题是[Rails.env]产生["development"],而不是[:development]。有一种简单的方法来象征[Rails.env]输出吗?我希望[Rails.env.symbolize!],但这不起作用。

1 个答案:

答案 0 :(得分:1)

我应该花更多的时间用谷歌搜索而不是打字这个问题。

irb(main):016:0> Rails.application.credentials[Rails.env.to_sym][:aws][:access_key_id]
=> "123dev"

我希望有一天能帮助别人!