我有一个标准应用程序,其中包含我们将慢慢迁移到单独的 gem 中的子应用程序。主要问题是每个子应用程序基本上具有几乎相同的架构和非常相似的业务逻辑,有时实际上几乎相同。
目前,作为第一步,我们创建了一个子文件夹,lib/client
其结构类似于典型的 Rails 应用程序。
例如,对 a 的关注ClientA
看起来像这样/
module Client
module ClientA
module Concerns
module MyConcern
...
end
end
end
这一切都很好,并由 Zeitwerk 自动加载。
但是,当我想以 Rails 方式创建初始化程序时,我不想将它包装在模块中并围绕它创建一个类,这就是我得到的地方lib/clients/ClientA/config/initializers/custom_initializer.rb to define constant Clients::ClientA::Config::Initializers::CustomInitializer, but didn't (Zeitwerk::NameError)
这个文件夹会像这样自动加载
config.autoload_paths += %W(#{config.root}/lib)
config.autoload_paths += %W(#{config.root}/lib/client/**/*)
有没有办法如何
- 将 Zeitwerk 自动加载的文件夹列入黑名单?
- 使用或以任何其他方式加载它
require
而不将其包装在模块中?