Я не могу исправить класс внутри тела метода.
В определении метода я пытаюсь использовать класс двумя способами:
1] Создайте экземпляр и используйте исходное определение метода в классе, который я использую.
2] Monkey исправляет (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
Я получаю (ОШИБКА: CLASS DEF IN METHOD BODY), где я пытаюсь исправить класс, так как я пытаюсь изменить класс внутри метода.
Как мне добиться исправления обезьяной класса в методе?
Спасибо
//
не помечает комментарий в ruby - person Justin L.   schedule 16.07.2013