よたらぼ
自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

April 25, 2002

[tDiary] アクセスカウンタ表示プラグイン

NTさんご指摘のとおりです。これはデグレードです。申し訳ないです。今日中に直して1.0.4を出します。

1.0.3を使っている方はNTさんのご指摘のとおりに修正していただければひとまず動作します....。ごめんなさい。

[tDiary] アクセスカウンタ表示プラグイン 1.0.4

というわけで1.0.4です。実はもうちょっといじりたいところがあるんだけど、それはもう少し落ち着いてからやります。

[Linux] ntp

Kondaraを2.1にバージョンアップしてからntpdがこける。おまけに時間がめちゃくちゃ狂う。なぜなにょ?


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でやってみると無名クラスっぽいところがダメだな...。うーむ、いろいろ問題ありっぽいなー。良いアイデアだと思ったんだけどなぁ。残念。


更新 設定