如何猴子修补Ruby模块

问题描述 投票:0回答:1

我有这个简单的ruby模块。我能够猴子修补Ruby类,但是这次我想猴子修补一个简单的Ruby模块,我尝试使用这种方法,但是没有用。我认为它会起作用,因为当我猴子修补一个简单的Ruby类时它会起作用。

Mymodule.class_eval do
 def self.function1
   "monkey patched function1 >>>"
 end
end

这是我们想要猴子修补的原始Mymodule:

module Mymodule
  def self.function1
    'this is function1'
  end 
end

样本用法:将Mymodule.function1()->输出:这是function1

关于如何猴子修补模块的任何想法?

ruby monkeypatching
1个回答
0
投票

您可以简单地重新打开课程并重新定义Mymodule.function1

module Mymodule
  def self.function1
    'monkey patched function1 >>>'
  end 
end

话虽如此,您建议的代码也可以正常工作:

module Mymodule
  def self.function1
    'this is function1'
  end 
end

Mymodule.class_eval do
  def self.function1
    'monkey patched funtion1 >>>'
  end 
end


puts Mymodule.function1
# monkey patched funtion1 >>>
© www.soinside.com 2019 - 2024. All rights reserved.