2013-08-20 60 views
1

我正在設置一些全局變量(用於設置devise寶石授權定製)。所以,我在config/auth文件夾中放置了一些文件auth_provider.rb,我在這裏聲明瞭一些模塊MyAuth(在一些myauth.rb文件中)。問題是,當該模塊由initializers文件夾中的一些文件調用,調用它caller.rb,讓我不得不把在application.rb文件在rails應用程序初始化之前設置配置變量

config.before_initialize do 
     Dir["#{config.root}/config/auth/*.rb"].each {|file| 
     require file 
     } 
end 

但我不覺得很自然。並且,如果我將auth_provider.rb放在initializers/auth文件夾中,那麼caller.rb似乎在auth_provider.rb之前加載,所以我得到一些namespace error(我認爲文件按字母順序加載)。那麼如何以更直接的方式加載auth_provider.rb之前的caller.rb?我應該創建一些initializers/0_auth文件夾以便首先加載? (順便說一句,我希望這個配置模塊化,並保持它與其他'正確的'rails應用程序配置變量聲明分開)

回答

1

如果您的初始化程序的順序很重要,您必須正確命名它們(它們按字母順序應用)。關於這個Rails的指南(http://guides.rubyonrails.org/configuring.html#using-initializer-files)建議使用數字,所以做這樣的事情你建議:

01_auth_provider.rb 
02_caller.rb 
... 

實際上是一個很好的方式。

+0

謝謝!你認爲還有其他方法可以做到這一點嗎?你怎麼看待我在'application.rb'中調用了一些負載? – Newben

+0

你爲什麼要找其他方法?即使您手動(通過自定義腳本)導入它們,您也必須自己定義一個訂單。使用這個文件名可能看起來是任意的,但是通過查看目錄中的文件,這些數字使得人們很容易評估哪個腳本被首先調用。 – Martin

相關問題