jos*_*xls 70 ruby metaprogramming
我有一个模块MyModule.我动态地将类加载到其中.如何获取其命名空间中定义的类的列表?
例:
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
Run Code Online (Sandbox Code Playgroud)
我应该说每个都f包含类似"类Foo;结束"的内容.
您也可以这样想:在Rails中,我如何以编程方式查找ActiveRecord模块中定义的所有类?
Chu*_*uck 119
通过常量访问类.模块中定义的类在该模块中列为常量.所以你只需要选择引用类的常量.
MyModule.constants.select {|c| MyModule.const_get(c).is_a? Class}
Run Code Online (Sandbox Code Playgroud)