Demandez-vous de voir tous les ancêtres d'une classe, ou les descendants? Pour ancêtres, utilisez:
Class.ancestors
Il n'y a pas de méthode comparable « de la boîte » pour les descendants, cependant. Vous pouvez utiliser ObjectSpace, comme ci-dessous, mais il est lent et ne peut être portable sur les implémentations Ruby:
ObjectSpace.each_object(Class) do |klass|
p klass if klass < StandardError
end
EDIT:
On peut également utiliser le crochet Class#inherited pour suivre subclassing. Cela n'attrape pas les sous-classes créées avant que la fonctionnalité de suivi ne soit définie, elle ne correspond donc pas à votre cas d'utilisation. Si vous avez besoin d'utiliser cette information par programme sur les classes définies dans votre application, cependant, cela peut être le chemin à parcourir.
Merci beaucoup! C'était exactement ce que je voulais! :) – flyer88