Monkeypatching for a local method in Rails 3



我遇到如下情况:

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内部。

相关内容

  • 没有找到相关文章

最新更新