当我使用 rails 6 / zeitwerk 时,如何扩展由 gem 定义的类?
我已经尝试在初始化程序中使用它require
首先加载类。我已经尝试在初始化程序中执行此操作,并且只是引用该类以让自动加载首先加载它。
但是这两种方法都破坏了开发模式下的自动重新加载。
我已经尝试将它放入lib/
or app/
,但这不起作用,因为那时该类永远不会从 gem 中加载,因为我的新文件在加载顺序中更高。
这里有一个类似的问题,但这个问题专门询问如何在初始化程序中执行此操作。我不在乎它是否在初始化程序中完成,我只想弄清楚如何以某种方式做到这一点。
做这样的事情的标准方法是什么?
我确实有一个讨厌的黑客似乎正在工作,但我不喜欢它(更新:这也不起作用。重新加载仍然被破坏):
the_gem_root = $LOAD_PATH.grep(/the_gem/).grep(/models/).first
require("#{the_gem_root}/the_gem/some_model")
class SomeModel
def my_extension
...
end
end