配置rails环境文件中可用的变量

时间:2012-02-13 14:27:06

标签: ruby-on-rails ruby config environment initializer

我目前正在使用初始化程序将config.yml文件加载到AppConfig哈希中,该哈希提供对环境变量的访问。对于生产我使用在服务器上设置的环境变量。如果未设置环境变量(即在开发和测试中),我使用以下代码回退到config变量。

ENV['FACEBOOK_API_KEY'] || AppConfig['facebook_api_key']

我的问题是我需要在环境特定的文件(development.rb / production.rb等)中提供这些变量,但是这个文件在初始化器之前加载。我该怎么处理这个?

2 个答案:

答案 0 :(得分:8)

查看Configuration Initialization Events的Rails指南。在进行这种配置时,您可以参与其中的事件。

简而言之,您可以使用以下命令对环境进行配置:

#config/environments/development.rb
YourApp::Application.configure do
  config.after_initialize do
    #do some configuration after all initialisers have run
  end
end

答案 1 :(得分:0)

如果有一种方法可以创建像database.yml这样的双层结构,您可以随时为同一文件中的每个环境定义单独的配置,然后引用相应的版本:

ENV['FACEBOOK_API_KEY'] || AppConfig[Rails.env] && AppConfig[Rails.env]['facebook_api_key']