Ruby on rails 在rails应用程序初始化之前设置配置变量

Ruby on rails 在rails应用程序初始化之前设置配置变量,ruby-on-rails,ruby,namespaces,initialization,Ruby On Rails,Ruby,Namespaces,Initialization,我正在设置一些全局变量(用于设置designegem授权定制)。因此,我将一些文件auth\u provider.rb放在config/auth文件夹中,在那里我声明了一些模块MyAuth(在一些MyAuth.rb文件中)。问题是当这个模块被initializers文件夹中的某个文件调用时,调用它caller.rb,因此我必须放入application.rb文件 config.before_initialize do Dir["#{config.root}/config/auth/*

我正在设置一些全局变量(用于设置
designe
gem授权定制)。因此,我将一些文件
auth\u 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\u provider.rb
放在
initializers/auth
文件夹中,那么
caller.rb
似乎是在
auth\u provider.rb
之前加载的,因此我得到了一些
名称空间错误
(我假定文件是按字母顺序加载的)。那么,如何以更直接的方式在调用方.rb之前加载
auth_provider.rb
?我是否应该创建一些
初始值设定项/0_auth
文件夹以便首先加载?(顺便说一句,我希望此配置模块化,并将其与“正确的”rails应用程序配置变量声明的其余部分明确分开)

如果初始值设定项的顺序很重要,则必须对其进行适当命名(它们按字母顺序应用)。关于这一点的Rails指南()建议使用数字,因此要像您建议的那样:

01_auth_provider.rb
02_caller.rb
...

实际上,这是一个很好的方法。

如果初始值设定项的顺序很重要,您必须正确地命名它们(它们按字母顺序排列)。关于这一点的Rails指南()建议使用数字,因此要像您建议的那样:

01_auth_provider.rb
02_caller.rb
...

这其实是个好办法。

谢谢!你认为还有其他方法可以做到吗?你认为我在
应用程序.rb中调用一些加载时做了什么?你为什么要寻找其他方法?即使您手动导入它们(通过自定义脚本),您也必须自己定义订单。使用文件名可能看起来是任意的,但是数字让人很容易评估首先调用哪个脚本,只需查看目录中的文件即可。谢谢!你认为还有其他方法可以做到吗?你认为我在
应用程序.rb中调用一些加载时做了什么?你为什么要寻找其他方法?即使您手动导入它们(通过自定义脚本),您也必须自己定义订单。为此使用文件名可能看起来是任意的,但是这些数字使人很容易评估首先调用哪个脚本,只需查看目录中的文件即可。