Технически, определение метода homer
фактически на модуле Kernel
, который смешивается с Object
, а не с Object
напрямую. Поэтому, когда homer
не является локальной переменной или методом экземпляра, определенным в Candy
, цепочка наследования метода Ruby отслеживается через Object
, а затем в смешанный модуль Kernel
, а затем выполняется этот код.
Редактировать: Извините, я не знаю, почему я так подумал. Похоже, что метод действительно живет на Object
. Не уверен, что это имеет большое значение на практике, но я должен был подтвердить вещи перед публикацией.