Como interceptar todas as chamadas para um método.
Considere que você tem uma aula como esta:
class MyService
def do_something
p "i'm doing something very interesting"
end
end
E você deseja executar algo antes e depois da execução do método do_something. Como você pode fazer isso sem tocar na implementação atual?
Reabra a classe, defina um apelido para fazer algo e reescreva para fazer algo extra.
Como isso:
MyService.class_eval do
alias :do_something_new :do_something
def do_something
p "i'm ready to do something"
do_something_new
p "i did something interesting, isn't it?"
end
end
Agora, se você chamar do_something, terá:
service = MyService.new
service.do_something
>> "i'm ready to do something"
>> "i'm doing something very interesting"
>> "i did something interesting, isn't it?"