使ENV变量在开发中可访问

时间:2013-04-01 11:21:19

标签: ruby-on-rails ruby-on-rails-3 environment-variables

存储敏感凭据时,我通常会在我的development.rb

中创建一个yml文件并加载它
APP_CONFIG = YAML.load_file("#{Rails.root}/config/config.yml")[Rails.env]

我可以这样访问

APP_CONFIG["google_secret"]

问题是Heroku不喜欢这个,所以我需要在本地设置ENV变量以使集成更容易。所以我创建了一个像这样的env.rb文件

ENV['google_key'] = 'xxx'
ENV['google_secret'] = 'xxx'
ENV['application_key'] = 'xxx'

并访问它我以为我可以使用

x = ENV['application_key']

但它找不到变量,如何在开发环境中加载它们?

由于

2 个答案:

答案 0 :(得分:3)

您应该将env.rb文件放在initializers文件夹中。如果您不想将env.rb文件推送到heroku,可以将其添加到.gitignore文件中。

答案 1 :(得分:2)

您是否考虑过使用Figaro来执行此操作? Figaro是inspired by Heroku's secret key application configuration,因此在Heroku生产环境中可以轻松地在开发中制作秘密ENV变量。

我在this StackOverflow thread上写了一个关于在Rails中隐藏秘密信息的答案(使用费加罗语),这些信息可以为你提供一些参考资料。