ruby で「require foo」を実行した場合、foo.rb で定義されているモジュールの名前を後で特定する方法はありますか?
たとえば、次のような foo.rb という名前の ruby ファイルがあるとします。
# foo.rb
module MyModule
def self.summary
"this does something useful"
end
...
end
別のスクリプトで、「require foo」を実行した後、MyModule という名前のモジュールがあることをどのように判断できますか?
私が最終的に求めているのは、次のようなことができるようになることです。
file = someComputedFileName()
require file
puts "summary of #{file}: #{???::summary}
モジュール名とファイル名を同じにするように強制することもできますが、そうはしません。短いファイル名を作成する際に、もう少し自由度が欲しいのですが、より表現力豊かなモジュール名が必要です。ただし、各ファイルが単一のモジュール (プラグインと考えてください) のみを定義することを保証します。