Ruby:获取扩展模块列表?

时间:2011-03-04 17:31:24

标签: ruby

当您在课程或其他模块中包含模块时,您可以调用

@mymod.included_modules

获取包含的模块列表。

是否有等效的列表模块扩展的模块?

module Feature1
end

module Feature2
  extend Feature1
end

Feature2.extended_modules #=> [Feature1]

3 个答案:

答案 0 :(得分:23)

Feature2.singleton_class.included_modules # => [Feature1, ...]

答案 1 :(得分:19)

他们在那里,你只需要在正确的地方寻找:

(class << Feature2; self end).included_modules   # [Feature1, Kernel]

我们可以这样概括:

class Module
  # Return any modules we +extend+
  def extended_modules
    (class << self; self end).included_modules
  end
end

# Now get those extended modules peculiar to Feature2
Feature2.extended_modules - Module.extended_modules # [Feature1]

答案 2 :(得分:2)

所有Ruby模块都可以从 CLI(命令行)列出,其本身如下:

ruby -e 'puts Gem::Specification.all().map{|g| [g.name, g.version.to_s] }'

OR

ruby -rubygems -e 'puts Gem::Specification.all().map{|g| [g.name, g.version.to_s] }'

希望这在某种程度上有所帮助!!!