¿Estás preguntando para ver todos los antepasados de una clase, o los descendientes? Por antepasados, utilice:
Class.ancestors
no hay un método comparable "fuera de la caja" para los descendientes, sin embargo. Puede utilizar ObjectSpace, como abajo, pero es lenta y puede no ser portable a través de implementaciones de Ruby:
ObjectSpace.each_object(Class) do |klass|
p klass if klass < StandardError
end
EDIT:
También se puede usar el gancho Class#inherited para realizar un seguimiento de subclases. Sin embargo, esto no detectará ninguna subclase creada antes de que se defina la funcionalidad de seguimiento, por lo que es posible que no se ajuste a su caso de uso. Sin embargo, si necesita utilizar esa información programáticamente en clases definidas dentro de su aplicación, este puede ser el camino a seguir.
¡Muchas gracias! ¡Eso era exactamente lo que quería! :) – flyer88