0

現在のスクリプトでrequire/includeを介してロードされたすべてのクラス/モジュールをRubyで見つける方法はありますか?

4

2 に答える 2

0

遡及的ではありません。私の知る限り、ランタイムは何かがロードされた場所の記録を保持していないため、現在のスクリプトが特定のクラスまたはモジュールの作成を担当するファイルをロードしたスクリプトであるかどうかを判断する方法はありません。取得できる最も近い方法は、自分でロードしているものを追跡するか、ObjectSpace をウォークして、特定の時点でロードされているすべてのクラスとモジュールを見つけることです。

于 2013-04-02T00:40:44.630 に答える
0

クラスとモジュールは定数です。

したがって、Object からすべての定数を取得し、require を実行して、ロード後に呼び出しからその情報を差し引くと、新しいものがすべて表示されます。

次のようになります。

my_constants = Object.constants
require 'my_library'
new_classes_and_modules = my_constants - Object.constants
于 2013-04-02T10:04:44.977 に答える