自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。
Ruby言語やLinuxのネタが多いです。
April 25, 2005 [おもひで]
■ [Ruby] そのClassやらModuleやらmethodがどのファイルで定義されてるのか知りたい
Rubyでは、複数のファイルに渡って、1つのクラスやモジュールにメソッドや定数を追加できる。これはとても便利なんだけど、実際にそのメソッドが定義されているのはどのファイルだろう?と探すと結構大変だったりする。
そんなわけで、次のようなものを考えてみた。
alias :_require :require $libnames = [] def require(lib) $libname = lib $libnames.push $libname _require lib $libname = $libnames.pop end def singleton_method_added(n) p [$libname, name, n.to_s] end def Object.method_added(n) p [$libname, name, n.to_s] end require ARGV[0]
例えば、これをtest.rbと保存して、$ ruby test.rb cgi とすれば、そのライブラリ名(cgi)、クラス名(CGI)、メソッド名(env_table等)が分かる。あとは、出力する部分を配列or ハッシュに保存してデータベースとすればよい。
■ ....と思ってたんだけど、これで全部かなー。あ、load, autoload, evalとかも考えないとかぁ。gtk2でやってみると無名クラスっぽいところがダメだな...。うーむ、いろいろ問題ありっぽいなー。良いアイデアだと思ったんだけどなぁ。残念。
[ツッコミを入れる]
