Zeitwerk 需要重新加载每个更改

Zeitwerk needs to reload every change

在开发环境中,当使用 zeitwerk 时,ruby 代码中的每个更改都需要重新启动服务器,因为 zeitwerk 没有加载 mygem 中定义的 类。我有一台 gem,我公司用的是 rails 型号。其中一些模型被重新打开,我们添加了一些方法。

我的应用程序中有以下模型。

require_dependency("#{Mygem::Engine.root.join('app','models','identification.rb')}")

class Identification
  include Cacheable
  has_paper_trail

  def some method
  end
end

以及我的gem中的以下模型,我的路径gem app/models/identification.rb:

class Identification < ApplicationRecord
  self.table_name = 'pub_identification'

  belongs_to :city, foreign_key: 'idcity'
end

但是如果我更改了我的代码中的任何内容,我需要重新启动我的服务器,因为我的 gem 中的模型没有重新打开。我收到错误:

undefined local variable or method `has_paper_trail' for Identification:Class

has_paper_trail 方法是我的gem 中的一个方法。而且它只有在我重新启动时才有效。对此有什么建议吗?

编辑:

Gem结构:

mygem/
├─ app/
│  ├─ models/
├─ config/
├─ lib/

不能有两个文件在自动加载路径中定义相同的常量。

你的引擎定义了一个模型,应用程序想要装饰它。对于此用例,请查看 this documentation.