Отражать на вложенном пространстве имен - PullRequest
5 голосов
/ 24 марта 2011

Я пытаюсь найти корневой класс / модуль во вложенном пространстве имен.

Это самый эффективный способ найти его?Мне не нравится, что я конвертирую в строку.Кажется, должно быть более элегантное решение.

class Foo
   class Bar
     def parent
        Object.const_get self.class.to_s.split(/::/).first
     end
   end
end

Foo::Bar.new.parent #=> Foo

1 Ответ

7 голосов
/ 24 марта 2011

Есть Module.nesting

module Foo
  module Bar
    module Baz
      p Module.nesting       # => [Foo::Bar::Baz, Foo::Bar, Foo]
      p Module.nesting.last  # => Foo
    end
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...