Почему одноэлементный метод модуля не виден в нижестоящих собственных классах, где он смешивается?

Я понимаю обычный путь поиска метода, т.е.class, superclass/module, all the way up to BasicObject, Я думал, что это верно и для одноэлементной версии цепочки, но неЭто не тот случай, когда вы смешиваете модуль в мета-цепочке. Я'Буду признателен, если кто-то может объяснить, почему в следующем примереAutomobile модуляbanner метод вызывается вместо его одноэлементной версии, когда я включаю этот модуль в Vehicle 'Собственный класс.

module Automobile
  def banner
    "I am a regular method of Automobile"
  end

  class < self
    def banner
      "I am a singleton method of Automobile"
    end
  end
end

class Vehicle 
  def banner
    "I am an instance method of Vehicle"
  end

  class < self
    include Automobile
    def banner
      puts "I am a singleton method of Vehicle"
      super
    end
  end
end

class Car < Vehicle
  def banner
    "I am an instance method of Car"
  end

  class < self
    def banner
      puts "I am a singleton method of Car"
      super
    end
  end
end

puts Car.banner

# I am a singleton method of Car
# I am a singleton method of Vehicle
# I am a regular method of Automobile

Ответы на вопрос(2)

Ваш ответ на вопрос