在rails app初始化之前设置配置变量

时间:2013-08-20 17:06:43

标签: ruby-on-rails ruby namespaces initialization

我正在设置一些全局变量(用于设置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配置变量声明的其余部分明确分开)

1 个答案:

答案 0 :(得分:1)

如果初始化程序的顺序很重要,则必须对它们进行适当命名(它们按字母顺序应用)。关于这个(http://guides.rubyonrails.org/configuring.html#using-initializer-files)的Rails指南建议使用数字,所以做一些像你提出的建议:

01_auth_provider.rb
02_caller.rb
...

实际上是一个好方法。