¿Por qué el eigenclass no es equivalente a self.class, cuando se ve tan similar?

Me perdí el memo en algún lugar, y espero que me lo expliques.

¿Por qué el eigenclass de un objeto es diferente deself.class?

class Foo
  def initialize(symbol)
    eigenclass = class << self
      self
    end
    eigenclass.class_eval do
      attr_accessor symbol
    end
  end
end

Mi tren de lógica que equipara el eigenclass conclass.self es bastante simple:

class << self es una forma de declarar métodos de clase, en lugar de métodos de instancia. Es un atajo paradef Foo.bar.

Así que dentro de la referencia al objeto de clase, regresandoself debe ser idéntico aself.class. Esto es porqueclass << self pondríaself aFoo.class para la definición de métodos / atributos de clase.

¿Estoy solo confundido? O, ¿es este un truco astuto de la programación de Ruby?

Respuestas a la pregunta(3)

Su respuesta a la pregunta