我有这个简单的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
关于如何猴子修补模块的任何想法?
您可以简单地重新打开课程并重新定义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 >>>