Предположим, у вас есть следующие вложенные модули:
module A
module B
module C
end
end
end
Если вам дан модуль
m = A::B::C
, тогда модуль верхнего уровня равен:
top = Module.const_get(m.to_s[/.+?(?=::)/])
#=> A
top.is_a? Module
#=> true
См. Модуль # const_get .Регулярное выражение гласит: «лениво соответствовать одному или нескольким символам (?
), за которыми следуют два двоеточия», (?=::)
означает позитивный прогноз .