Ruby method_missing

Cuando envías un mensaje a un objeto, el objeto ejecuta el primer método que encuentra con el mismo nombre que el mensaje. Si no puede encontrar dicho método, genera una excepción NoMethodError, a menos que hayas provisto al objeto con un método llamado method_missing.

A este método es pasado el símbolo que corresponde al método no existente y todos los argumentos que fueron pasados.

method_missing es en parte una red de seguridad: Te proporciona una manera de interceptar mensajes que no pueden ser ejecutados y de manejarlos con elegancia. Observa el ejemplo p012zmm.rb (vamos a hablar acerca de cómo crear nuestras propias clases más adelante).

1 class Prueba 
2   
3   def method_missing(m, *args)  
4     puts "No hay un mensaje llamado #{m} aqui -- por favor intentalo de nuevo."  
5   end  
6 end  
7 
8 Prueba.new.baila

El resultado de ejecutar este programa es:

Method Missing