3

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

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

我的问题是我需要其中一些变量在特定于环境的文件(development.rb/production.rb 等)中可用,但这个文件是在初始化程序之前加载的。我应该如何处理?

4

2 回答 2

8

查看 Rails guide for Configuration Initialization Events。在进行这种配置时,您可以挂钩某些事件。

简而言之,您可以在初始化后完成环境配置:

#config/environments/development.rb
YourApp::Application.configure do
  config.after_initialize do
    #do some configuration after all initialisers have run
  end
end
于 2012-02-13T14:36:22.803 回答
0

如果有一种方法可以创建一个两层结构,就像database.yml您总是可以在同一个文件中为每个环境定义单独的配置一样,然后引用适当的版本:

ENV['FACEBOOK_API_KEY'] || AppConfig[Rails.env] && AppConfig[Rails.env]['facebook_api_key']
于 2012-02-13T15:33:29.240 回答