我无法为方法体内的类修补一个类。如何在一个方法内部修补一个ruby类
在方法内部定义, 我试图以两种方式使用类:
1]创建一个实例,并使用方法的一部开拓创新的定义在类中我使用
2] Monkey patch(pverride)类中的一种方法,现在使用带有新方法定义的实例。
基本上我会在我的程序中使用上述两个类的实例。
挑战是我重写的方法在初始化期间被调用,所以我必须在创建类的实例之前重写它。
这里是一个小样本:
class A
def initialize
do_something
end
def do something
#implementation
end
end
现在,我想用相同的方法两次,但一旦使用do_something 的修改版本这是我正在试图做的它:
def my_method
orig_instance = A.new
#patch the class
Class A # ERROR: CLASS DEF IN METHOD BODY
class << self
alias_method :old_do_something, :do_something
def self.do_something
# new implementation
end
end
new_instance = A.new
#restore method
class << self
alias_method :do_something,:old_do_something
def self.do_something
# new implementation
end
end
end # end of method
我得到的(错误:方法体类DEF),我尝试猴子修补类,因为我试图改变一个方法的内部类。
如何在一种方法中实现猴子修补类?
感谢
你得到上面的错误?哪个错误?这是C级,而不是C级。 – oldergod
对不起,如果您浏览了代码,您可能会错过代码中标记的错误。为了清晰起见,再次编写它 – codeObserver
稍微无关,但我很确定''//在红宝石中不标记注释 –