モジュール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
各f
には「class Foo; end」のようなものが含まれていると言う必要があります。
また、次のように考えることもできます。Railsでは、ActiveRecordモジュール内で定義されたすべてのクラスをプログラムで見つけるにはどうすればよいですか?
クラスは定数を介してアクセスされます。モジュール内で定義されたクラスは、そのモジュールの定数としてリストされます。したがって、クラスを参照する定数を選択するだけです。
MyModule.constants.select {|c| MyModule.const_get(c).is_a? Class}