Trilha Júnior Trilha

Meta Ruby: method_missing

O curso trata do method_missing, o gancho que o Ruby chama quando a busca comum de métodos pela cadeia de ancestors volta vazia. Ele mostra que a versão padrão, em BasicObject, levanta NoMethodError, e que qualquer classe pode sobrescrevê-la para tratar famílias de chamadas sem um def para cada uma. Também explica por que uma sobrescrita sem super engole erros de digitação, como o super traz o erro de volta e por que o respond_to_missing? precisa vir junto. No fim, lê o código do delegate_missing_to do Rails e monta um proxy com as mesmas peças.

O que você vai aprender

  • ✓Como o Ruby chama o method_missing antes de levantar NoMethodError
  • ✓Sobrescrever o method_missing para tratar uma família de chamadas parecidas
  • ✓Chamar super para as chamadas que o method_missing não trata
  • ✓Sobrescrever o respond_to_missing? para que respond_to? e method() respondam certo
  • ✓Como o delegate_missing_to do Rails usa o par method_missing e respond_to_missing?
  • ✓Montar um proxy que repassa chamadas com method_missing, respond_to_missing? e super
Prévia grátis · Aula 1 3 min de leitura

O que acontece quando um método não existe

NoMethodError apareceu muitas vezes nesta série: um erro de digitação, um método chamado no tipo errado, um nome que não existe naquele objeto.

Ler a aula completa grátis →

Currículo

7 aulas
Digite para buscar...