ExpertiDict

Ruby · Avançado · Inglês · Técnico

respond to missing

/rɪˈspɑnd tu ˈmɪsɪŋ/método

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!) => true

Exemplos

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.

Veja também

Todos os termos de Ruby