我正在设置一些全局变量(用于设置devise
gem授权自定义)。所以,我在auth_provider.rb
文件夹中放了一些文件config/auth
,我在其中声明了一些模块MyAuth(在某些myauth.rb
文件中)。问题是,当initializers
文件夹中的某个文件调用此模块时,请将其命名为caller.rb
,以便我必须放入application.rb
文件
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 app配置变量声明的其余部分明确分开)
答案 0 :(得分:1)
如果初始化程序的顺序很重要,则必须对它们进行适当命名(它们按字母顺序应用)。关于这个(http://guides.rubyonrails.org/configuring.html#using-initializer-files)的Rails指南建议使用数字,所以做一些像你提出的建议:
01_auth_provider.rb
02_caller.rb
...
实际上是一个好方法。