Feature #3773: Module#parent
http://redmine.ruby-lang.org/issues/show/3773

Author: Thomas Sawyer
Status: Open, Priority: Normal

Not sure "parent" is the best name, it does seem like this functionality should be provided somehow by Ruby itself.

  class Module
    # Returns the name of the module containing this one.
    #
    #   M::N.parent_name # => "M"
    def parent_name
      unless defined? @parent_name
        @parent_name = name =~ /::[^:]+\Z/ ? $`.freeze : nil
      end
      @parent_name
    end

    # Returns the module which contains this one according to its name.
    #
    #   module M
    #     module N
    #     end
    #   end
    #   X = M::N
    #
    #   M::N.parent # => M
    #   X.parent    # => M
    #
    # The parent of top-level and anonymous modules is Object.
    #
    #   M.parent          # => Object
    #   Module.new.parent # => Object
    #
    def parent
      parent_name ? constant(parent_name) : Object
    end

    # Returns all the parents of this module according to its name, ordered from
    # nested outwards. The receiver is not contained within the result.
    #
    #   module M
    #     module N
    #     end
    #   end
    #   X = M::N
    #
    #   M.parents    # => [Object]
    #   M::N.parents # => [M, Object]
    #   X.parents    # => [M, Object]
    #
    def parents
      parents = []
      if parent_name
        parts = parent_name.split('::')
        until parts.empty?
          parents << constant(parts * '::')
          parts.pop
        end
      end
      parents << Object unless parents.include? Object
      parents
    end

  end


----------------------------------------
http://redmine.ruby-lang.org