2013-02-08 84 views
0

如何確定Rails是否已加載完整環境?例如,環境特定的配置已完全加載。確定是否加載Rails環境

我的根本問題是,我安裝了一個鉤子來捕獲環境特定配置中的某些異常,但我不想在配置仍在加載時捕獲任何異常,以免屏蔽任何配置的問題。

我發現了一些令人不滿意的方法可以做到這一點,例如Rails.application.config.middleware將是一個MiddlewareStackProxy實例之前的配置是完全加載(和MiddlewareStack後),但必須有一個更直接的方式。

回答

0

以下是加載的順序,在我看來你需要設置你自己的環境變量,也許在「初始化器完成」之後,然後在你的代碼中檢查是否設置了。 http://guides.rubyonrails.org/v2.3.11/configuring.html

Preinitializers 
environment.rb 
Environment-specific Configuration Files 
Initializers (load_application_initializers) 
After-Initializers 

因爲你在做什麼,我看沒有別的辦法,只能消化文檔的這一部分(見周圍1.14): http://guides.rubyonrails.org/initialization.html#config-environment-rb

+0

謝謝,但我的任務不依賴於環境,這是不是問題。由於我編寫的framework-y代碼(捕獲Rake任務引發的異常),我真的需要知道環境是否從加載順序中的任何點加載。 – 2013-02-08 15:53:00

+0

因此,如果你的代碼依賴於env並且env已經加載,因爲你的條件依賴於那個,那麼問題是什麼?您需要檢查env中的哪些值? – 2013-02-08 16:09:44

+0

這不是關於平均Rake任務,我是駭客Rake本身。你可以真正看到我在做什麼[這裏](https://github.com/nikhaldi/exception_notification-rake)。我的代碼monkeypatches Rake捕獲異常。但是,一旦monkeypatch就位,這是在環境加載過程中發生的,它將捕獲任何異常情況。我不想那樣,我只想在環境加載完成後捕獲異常。 – 2013-02-08 16:33:18