我目前正在使用初始化程序将config.yml文件加载到AppConfig哈希中,该哈希提供对环境变量的访问。对于生产我使用在服务器上设置的环境变量。如果未设置环境变量(即在开发和测试中),我使用以下代码回退到config变量。
ENV['FACEBOOK_API_KEY'] || AppConfig['facebook_api_key']
我的问题是我需要在环境特定的文件(development.rb / production.rb等)中提供这些变量,但是这个文件在初始化器之前加载。我该怎么处理这个?
答案 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']