查找模块中可用的类

我有一个模块MyModule 。 我dynamic加载类到它。 我如何获得在其名称空间中定义的类的列表?

例:

 def load_plugins Dir.glob(File.dirname(__FILE__) + '/plugins/*.rb') do |f| MyModule.class_eval File.read(f) end # now how can I find the new classes I've loaded into MyModule? end 

我应该说,每个f包含像“Foo类;结束”的东西。

你也可以这样想:在Rails中,我怎样才能以编程方式find在ActiveRecord模块中定义的所有类?

类是通过常量访问的。 模块中定义的类在该模块中被列为常量。 所以你只需要select引用类的常量。

 MyModule.constants.select {|c| MyModule.const_get(c).is_a? Class}