1

我正在设置一些全局变量(用于设置devisegem 授权自定义)。所以,我把一些文件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 应用程序配置变量声明的其余部分清楚地分开)

4

1 回答 1

1

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

01_auth_provider.rb
02_caller.rb
...

其实是个好办法。

于 2013-08-20T18:09:41.457 回答