如何猴子修补 Ruby 模块
How to monkey patch the Ruby module
我有这个简单的 ruby 模块。我能够猴子修补 Ruby class 但这次我想猴子修补一个简单的 Ruby 模块,我尝试使用
这种方法但没有奏效。我认为它会起作用,因为当我猴子修补一个简单的 Ruby class.
时它会起作用
Mymodule.class_eval do
def self.function1
"monkey patched function1 >>>"
end
end
这是我们想要猴子补丁的原始 Mymodule:
module Mymodule
def self.function1
'this is function1'
end
end
示例用法:
puts Mymodule.function1() -> 输出:这是 function1
知道如何给模块打补丁吗?
您只需重新打开 class 并重新定义 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 >>>
我有这个简单的 ruby 模块。我能够猴子修补 Ruby class 但这次我想猴子修补一个简单的 Ruby 模块,我尝试使用 这种方法但没有奏效。我认为它会起作用,因为当我猴子修补一个简单的 Ruby class.
时它会起作用Mymodule.class_eval do
def self.function1
"monkey patched function1 >>>"
end
end
这是我们想要猴子补丁的原始 Mymodule:
module Mymodule
def self.function1
'this is function1'
end
end
示例用法:
puts Mymodule.function1() -> 输出:这是 function1
知道如何给模块打补丁吗?
您只需重新打开 class 并重新定义 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 >>>