Ruby · Avançado · Inglês · Técnico
respond to missing
Hook que informa a respond_to? e a method quais métodos fantasmas existem. Deve ser definido junto com method_missing para manter a coerência.
Onde usar
Sem ele, um objeto que atende chamadas por method_missing diz que não responde a elas, quebrando duck typing e dublês de teste. No code review, a falta desse par é um bug clássico.
Em código
class Eco
def method_missing(m, *a)
m.end_with?('!') ? m : super
end
def respond_to_missing?(m, ip = false)
m.end_with?('!') || super
end
end # Eco.new.respond_to?(:oi!) => trueExemplos
Define respond_to_missing? whenever you override method missing.
Defina respond_to_missing? sempre que sobrescrever o method missing.
The mock failed because respond_to_missing? was not defined.
O mock falhou porque o respond_to_missing? não estava definido.
Cuidado
Não substitui method_missing: ele só informa que o método existe, quem executa a chamada é o method_missing.