我正在设置一些全局变量(用于设置 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 应用程序配置变量声明的其余部分明确分开)
最佳答案
如果您的初始化程序的顺序很重要,您必须适本地命名它们(它们按字母顺序应用)。关于这个的 Rails 指南( http://guides.rubyonrails.org/configuring.html#using-initializer-files )建议使用数字,所以做一些你建议的事情:
01_auth_provider.rb
02_caller.rb
...
其实是个好办法。
关于ruby-on-rails - 在 Rails 应用程序初始化之前设置配置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18341003/