如何给Ruby模块打猴子补丁

dz6r00yl  于 2022-12-18  发布在  Ruby
关注(0)|答案(1)|浏览(139)

我有一个简单的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

样品使用:

puts Mymodule.function1()
# -> output: this is function1


你知道怎么修补这个模块吗?

wwtsj6pe

wwtsj6pe1#

您只需重新打开类并重新定义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 >>>

相关问题