Допустим, ваш коллега monkeypatches класса Fixnum и переопределяет метод + вычитать вместо оного:Как вы можете повлиять на последовательность загрузки Ruby-кода?
class Fixnum
def +(x)
self - x
end
end
>> 5 + 3
=> 2
Вашей проблемы вы хотите получить доступ к исходной функциональности методы +. Таким образом, вы удаляете этот код перед его в том же исходном файле. Он сглаживает + метод до «original_plus» до он обезьяна передает его.
class Fixnum
alias_method :original_plus, :+
end
class Fixnum
def +(x)
self - x
end
end
Теперь вы можете получить доступ к исходной функциональности метода + через original_plus
>> 5 + 3
=> 2
>> 5.original_plus(3)
=> 8
Но что мне нужно знать, это:
Есть ли другой способ загрузки этого псевдонима До того, как его загрузили обезьяны, кроме того, чтобы вставить его в тот же исходный файл, который он изменил?
Есть две причины для моего вопроса:
- Я не хочу, чтобы он знал, что я сделал это
- Если исходный файл изменен таким образом, что псевдоним заканчивает НИЖЕ monkeypatch, то псевдоним больше не даст желаемого результата.
О, боже, просто глядя на эту палочку обезьяны, я съеживаюсь. –
@ Ólafur - Я согласен. Несмотря на мощь, которую он дает, monkeypatching действительно открывает возможность для многих катастрофических побочных эффектов. Вы должны спросить, действительно ли это стоит того. –