查找模块中可用的类
我有一个模块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}