在开发环境中,当使用zeitwerk时,ruby代码中的每一个更改都需要重新启动服务器,因为zeitwerk没有加载mygem中定义的类。我有一个宝石,我的公司使用rails模型。其中一些模型被重新打开,我们添加了一些方法。
我的应用程序中有下面的模型。
require_dependency("#{Mygem::Engine.root.join('app','models','identification.rb')}")
class Identification
include Cacheable
has_paper_trail
def some method
end
end以及mygem中的以下模型,我的创业板应用/模型/标识的路径。my:
class Identification < ApplicationRecord
self.table_name = 'pub_identification'
belongs_to :city, foreign_key: 'idcity'
end但是,如果我更改代码中的任何内容,我需要重新启动服务器,因为来自我的宝石的模型不会被重新打开。我知道错误:
undefined local variable or method `has_paper_trail' for Identification:Classhas_paper_trail方法是mygem的一种方法。只有在我重新启动的时候才能起作用。有什么建议吗?
编辑:
创业板结构:
mygem/
├─ app/
│ ├─ models/
├─ config/
├─ lib/发布于 2022-03-29 22:04:37
不能有两个文件在自动加载路径中定义相同的常量。
您的引擎定义了一个模型,应用程序希望对其进行修饰。对于这个用例,请看一下这份文件。
https://stackoverflow.com/questions/71668387
复制相似问题