¿Por qué el método de singleton de un módulo no es visible en las clases de eigencas posteriores donde se mezcla?

Entiendo la ruta de búsqueda de método regular, es decir,class, superclass/module, all the way up to BasicObject. Pensé que también era cierto para la versión singleton de la cadena, pero no parece ser el caso cuando se mezcla un módulo en la meta-cadena. Apreciaría si alguien pudiera explicar por qué en el siguiente ejemplo.Automobile módulo debanner El método se llama en lugar de su versión singleton cuando he incluido este módulo en la clase de eigenclatura del vehículo.

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

Respuestas a la pregunta(2)

Su respuesta a la pregunta