Под «детьми» вы подразумеваете модули, вложенные в данный модуль, верно? Ничего общего с наследственными отношениями?
Предполагая, что вы имеете в виду только вложенные модули, должно работать следующее:
class Module
def children
constants.collect { |c| const_get(c) }.
select { |m| m.instance_of?(Module) }
end
end
РЕДАКТИРОВАТЬ: Возможно, вам придется использовать constants(false)
для предотвращения постоянного поиска модулей дальше по цепочке наследования.