Ruby · Avançado · Inglês · Técnico
prepend
Insere um módulo antes da classe na cadeia de ancestrais, de modo que seus métodos tenham prioridade e possam chamar o original com super.
Onde usar
É a forma moderna de envolver um método existente, como para logar ou medir tempo, sem alias. No code review, prefira prepend a monkey patching direto, pois deixa o original intocado.
Em código
module Log
def oi = "[log] " + super
end
class Saudacao
prepend Log
def oi = 'olá'
end
puts Saudacao.new.oi # => [log] oláExemplos
We prepend a module to wrap the original method.
Fazemos prepend de um módulo para envolver o método original.
With prepend, super reaches the class's own method.
Com prepend, o super alcança o método da própria classe.
Cuidado
Não confunda com include, que coloca o módulo depois da classe: com include, o método da classe vence.
Antônimos
include