Я не могу обезьяны заплатить класс внутри тела метода.
В рамках определения метода, Я пытаюсь использовать класс двумя способами:
1] Создайте экземпляр и используйте определение orignal метода в классе, который я использую
2] Monkey patch (pverride) метод в классе и теперь используйте экземпляр с новым определением метода.
В принципе, я бы использовал оба вышеуказанных экземпляра класса в своей программе.
Проблема заключается в том, что метод, который я переопределяю, вызывает во время инициализации, поэтому я должен переопределить его, прежде чем создать экземпляр класса.
Вот небольшой макет:
class A
def initialize
do_something
end
def do something
#implementation
end
end
Теперь я хочу использовать A в том же методе дважды, но один раз с помощью модифицированной версии 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
Я получаю (ERROR: CLASS DEF IN METHOD BODY), где я пытаюсь обезглавить патч класса, так как я пытаюсь изменить класс внутри метода.
Как достичь обезьяны, исправляющей класс в методе?
Спасибо