class Module

def module_parents

X.module_parents # => [M, Object]
M::N.module_parents # => [M, Object]
M.module_parents # => [Object]

X = M::N
end
end
module N
module M

nested outwards. The receiver is not contained within the result.
Returns all the parents of this module according to its name, ordered from
def module_parents
  parents = []
  if module_parent_name
    parts = module_parent_name.split("::")
    until parts.empty?
      parents << ActiveSupport::Inflector.constantize(parts * "::")
      parts.pop
    end
  end
  parents << Object unless parents.include? Object
  parents
end