class << Command; self; end
возвращает одноэлементный класс Command
.Это тот класс, для которого Command является единственным (прямым) экземпляром.
В ruby синглтон-класс подкласса C является подклассом синглтон-класса C.Таким образом, все подклассы Command имеют одноэлементные классы, которые наследуются от одноэлементного класса Command.
ObjectSpace.each_object(C)
выполняет итерации по всем объектам, которые являются экземплярами класса C
или одного из его подклассов.Таким образом, делая ObjectSpace.each_object(singleton_class_of_command)
, вы перебираете Command и все ее подклассы.
Бит enum_for
возвращает Enumerable, который перечисляет все элементы, которые перебирает each_object
, поэтому вы можете превратить его в массив сto_a
.