如何查找包含模块的模块或类?

Mik*_*kov 3 ruby

有一个很好的技巧可以帮助找到继承的子类:

class SubClasses

  @@subclasses ||= []

  def self.inherited subclass
    @@subclasses << subclass
  end

  def self.subclasses
    @@subclasses
  end
end
Run Code Online (Sandbox Code Playgroud)

此外,我发现使用Foo.included_modules.

但它在 上不可用Module。我如何获取包含模块的所有类?是否可以?

更新

解决了!

获取包含模块的类列表

Dav*_*uth 5

要监视模块何时包含在另一个模块或类中,请使用included钩子:

module Parent
  class << self
    attr_reader :includers
  end

  def self.included(base)
    @includers ||= []
    @includers << base.name
  end
end
Run Code Online (Sandbox Code Playgroud)