すべての定数 (モジュールとクラスを含む) のリスト (配列) と、外部の ruby ファイルのロード時に追加または再定義されるメソッドとクラスまたはインスタンス変数を取得する方法はありますか?
質問する
42 次
1 に答える
3
これでうまくいくはずです:
def all_constants_with_methods
constants = Object.constants.map { |sym| Object.const_get sym }
Hash[constants.map { |constant| [constant, (constant.instance_methods rescue [])] }]
end
before = all_constants_with_methods
load foo.rb
after = all_constants_with_methods
constants_added = after.keys - before.keys
methods_added = Hash[after.keys.map do |c|
[c, after[c] - (before[c] || [])]
end.reject do |_, v|
v.empty?
end]
ただし、メソッドが再定義されたかどうかを知る方法はありません。class_variables
これをクラス変数 ( を使用) およびクラス インスタンス変数 ( を使用)に簡単に拡張できますinstance_variables
。
于 2012-10-05T00:40:40.800 に答える