首页 > 解决方案 > 运行 rake zeitwerk 时出错:使用 Zeitwerk Loader 通过从 Rails 引擎继承一个类作为 Rails 6 应用程序中的 gem 来签入模型

问题描述

我在 Rails 应用程序中使用 Rails 引擎作为 Gem。现在,我在我的 rails 应用程序模型中从 rails 引擎继承了一个类。

1. Rails 应用模型代码

class AppModelOne < EngineGem::EngineClassOne
   # body of the class
end

但是
rake zeitwerk:check
在终端中运行命令时,我收到了一个错误,即
未初始化的常量 <class:32323332xx> EngineModuleTwo
现在我检查了 EngineClassOne 的 Rails 引擎代码,其中有一个 EngineModuleTwo 的包含语句。

2. Rails 引擎类代码

module EngineGem
  class EngineClassOne
     include EngineModuleTwo::EngineSubModuleOne
  end
end

引擎文件结构:

  EngineGem -> |-> app     -> models |-> engine_gem         -> engine_class_one
               |                     |-> engine_module_two  -> engine_sub_module_one
               |-> gemspec

为什么它无法加载模块,任何人都可以解释如何在我的 rails 应用程序中使用它时将模块加载到 rails 引擎中吗?

标签: ruby-on-railsrubyautoloadrails-engineszeitwerk

解决方案


推荐阅读