Dependencias circulares en Ruby

Digamos que tenemos dos clases, Foo y Foo Sub, cada una en un archivo diferente, foo.rb y foo_sub.rb respectivamente.

foo.rb:

require "foo_sub"
class Foo
    def foo
        FooSub.SOME_CONSTANT
    end
end

foo_sub.rb:

require "foo"
class FooSub < Foo
    SOME_CONSTANT = 1
end

Esto no va a funcionar debido a la dependencia circular: no podemos definir ninguna clase sin la otra. Hay varias soluciones que he visto. Quiero evitar dos de ellas, es decir, ponerlas en el mismo archivo y eliminar la dependencia circular. Entonces, la única otra solución que he encontrado es una declaración directa:

foo.rb:

class Foo
end
require "foo_sub"
class Foo
    def foo
        FooSub.SOME_CONSTANT
    end
end

foo_sub.rb

require "foo"
class FooSub < Foo
    SOME_CONSTANT = 1
end

Desafortunadamente, no puedo hacer que funcione lo mismo si tengo tres archivos:

foo.rb:

class Foo
end
require "foo_sub_sub"
class Foo
    def foo
        FooSubSub.SOME_CONSTANT
    end
end

foo_sub.rb:

require "foo"
class FooSub < Foo
end

foo_sub_sub.rb:

require "foo_sub"
class FooSubSub < FooSub
    SOME_CONSTANT = 1
end

Si necesito foo_sub.rb, entonces FooSub es una constante no inicializada en foo_sub_sub.rb. ¿Alguna idea de cómo solucionar esto sin ponerlos en el mismo archivo ni eliminar la dependencia circular?

Respuestas a la pregunta(3)

Su respuesta a la pregunta