我有一个 rails 4.1 应用程序,我正在尝试组织我的环境变量。截至目前,我的 config/ 文件夹中有一个 secrets.yml 文件。我还安装了 figaro gem。我的目标是将所有环境变量都放在 application.yml(未检入 git)文件中,然后使用 secrets.yml(检入 git)文件将变量从 appliation.yml 映射到应用程序。当我使用 Rails.application.secrets 打印文件时,它只显示如下所示的哈希:
:salesforce_username=>"ENV['SALESFORCE_USERNAME']"
我的所有外部服务都没有使用这个环境变量设置。当我查看跟踪时,实际上 ENV['ACCOUNT_ID'] 正在像这样的请求中传递:
v2/accounts/ENV['ACCOUNT_ID']/envelopes
此外,我无法在我的应用程序中使用 Rails.application.secrets.account_id 访问我的环境变量。
秘密.yml
development:
account_id: <%= ENV['ACCOUNT_ID'] %>
应用程序.yml
development:
ACCOUNT_ID: "123456"
应用程序.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