_Предлагаю вашему вниманию перевод фрагмента книги [Metaprogramming Ruby 2][1] за авторством Паоло Перротта (Paolo Perrotta)._
#### Что такое method\_missing?
В Руби мы можем вызывать методы которые не существуют, но это будет возвращать нам ошибку. Для примера:
class Lawyer; end
nick = Lawyer.new
nick = talk_simple
NoMethodError: undefine method 'talk_simple' for #<Lawyer:0x007f801aa81938>
Помните ли вы как работает поиск методов? Когда вы вызываете метод talk\_simple, Ruby идет в класс объекта nick, и перебирает там методы. Если он не может найти метод там, он ищет его в родителей данного класса, потом в Object и наконец в BasicObject. Ну и поскольку Ruby не может нигде найти метод talk\_simple, он запускает метод method\_missing для nick’a. Ruby знает что этот метод есть, потому, что это приватный метод BasicObject от которого наследуются все объекты. [Читать дальше →][2]
[1]:
https://pragprog.com/book/ppmetr2/metaprogramming-ruby-2
[2]:
http://habrahabr.ru/post/269785/#habracut