fault_injection.rbを作っていて、メソッドの定義行を pure ruby で取れないかなと思った。今のところ方法を発見できていない。
Procクラスだとto_sでファイルと行番号が含まれるのだが、Methodクラスのto_sメソッドには含まれない。なんだか微妙に理不尽。
# irb irb(main):001:0> Proc.new{}.to_s => "#<Proc:0x00000000@(irb):1>" irb(main):002:0> class Foo;def foo;end;end irb(main):003:0> Foo.new.mothod(:foo).to_s => "#<Method: Foo#foo>"
- rubyforgeにいくつかあるRubyのパーサーを使う
- 1.9なら、1.9から入るripperを使う
- とりあえずゆるい感じで正規表現とかで .rb ファイルをパースする
- スクリプトのはじめからset_trace_funcでメソッド定義を監視する
っていう手段があるんだけど、どうしようかな・・・
あるいは、手段があるだろうか?てかripperはどうなんだろう・・・?青木さんのページの最終更新が2005年になってるんだけど・・・