2012-02-13 126 views
3

我正在使用初始化程序將一個config.yml文件加載到一個AppConfig散列中,該散列提供對環境變量的訪問。爲了生產,我使用服務器上設置的環境變量。如果未設置環境變量(即在開發和測試中),我正在使用以下代碼回退到配置變量。在rails環境文件中可用的配置變量

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

我的問題是,我需要一些變量在特定的環境文件(development.rb/production.rb等)可用,但initialzers之前該文件被加載。我應該如何處理這個問題?

回答

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 
+0

謝謝。那正是我需要的。它實際上after_initialize NOT after_initializion btw。 – Undistraction 2012-02-13 16:08:54

+0

哈 - 謝謝。我正在考慮初始化美式風格的拼寫,而我的手指決定輸入初始化。 – roo 2012-02-14 03:17:03

0

如果有一種方法可以創建一個兩層的結構是怎樣的database.yml你總是可以定義在每個環境分別進行配置相同的文件,然後參考相應的版本:

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

謝謝,但那實際上就是我在做什麼,只是我沒有爲環境使用單獨的散列,因爲我不需要一次爲多個存儲配置值。 – Undistraction 2012-02-13 16:07:47

相關問題