我遇到如下情况:
Module Task
def get(a)
fetch(a)
end
def fetch(a)
query(a)
end
def query(a)
puts a
end
end
并且只有get
方法是从类似的模块外部调用的
Task.get('name')
我想只对方法query
进行猴子补丁,以响应get
方法,因为它调用query
实习生。
请建议一种方法。
为了在这种情况下进行猴子补丁,我们需要在lib文件夹中包含一个文件。在这种情况下,您需要在lib文件夹中创建一个同名的文件。其中首先包括模块TASK,然后使用MODULENAME.module_eval
并添加其中的方法。在这个文件中,u可以覆盖实际模块中的方法,并向其中添加方法。为了实现这一点,您必须在config/initializers/app.rb 中的lib中创建文件u
如果你正在使用的模块存在于一个文件夹中(就像红宝石宝石的情况一样),你需要包括整个路径。例如
Module_1.Module_2.module_eval
其中模块2在模块1内部。