我想重写一个位于Ruby/Rails中的Gem中的方法,并且我正在努力解决一些问题。从模块方法调用超级模块
我的目标是在调用Gem中的某个方法时执行自定义代码,但也会继续执行原始代码。
我试图抽象的代码放到下面的脚本:
module Foo
class << self
def foobar
puts "foo"
end
end
end
module Foo
class << self
def foobar
puts "bar"
super
end
end
end
Foo.foobar
执行这个脚本给我这个错误:
in `foobar': super: no superclass method `foobar' for Foo:Module (NoMethodError)
我应该怎么写压倒一切的方法,所以我可以叫超与这个例外被提出?
PS:重写工作得很好,如果我删除超级,但然后原来的方法没有被调用,我不想这样。
^这一点,你只需重新定义方法foobar的 – derp
好吧,我现在明白了。 非常感谢! – Elhu