我有一个基于Rails 4.1的应用程序,正在尝试组织我的环境变量。目前,在我的config/文件夹中有一个secrets.yml文件。我还安装了figaro gem。我的目标是将所有的环境变量都放在不提交到git中的application.yml文件中,然后使用提交到git的secrets.yml文件将变量从application.yml映射到应用程序中。当我使用Rails.application.secrets打印这些文件时,它只显示像这样的哈希值:
:salesforce_username=>"ENV['SALESFORCE_USERNAME']"
我的外部服务在这个环境变量设置下都无法正常工作。当我查看跟踪时,实际上是像这样通过请求传递ENV ['ACCOUNT_ID']:
v2/accounts/ENV['ACCOUNT_ID']/envelopes
此外,在我的应用程序中,我无法使用Rails.application.secrets.account_id访问我的env变量。
secrets.yml
development:
account_id: <%= ENV['ACCOUNT_ID'] %>
aplication.yml
development:
ACCOUNT_ID: "123456"
application.rb
# preload tokens in application.yml to local ENV
config = YAML.load(File.read(File.expand_path('../application.yml', __FILE__)))
config.merge! config.fetch(Rails.env, {})
config.each do |key, value|
ENV[key] = value.to_s unless value.kind_of? Hash
end