RubyInject でプロセスにもぐりこめ!
Laurent が彼の日記で新作 RubyInject に触れていたので見てみる&軽く紹介。これは mach_star を Ruby で使えるようにするもの。PyObjC には以前から objc.inject (サンプル) というものがあって、それの Ruby/RubyCocoa 版と言ってよいだろう。たぶん。
mach_starは
- 既存のシンボルを別の関数でオーバーライドできる
- 実行中のプロセスに任意のモジュールをロードできる(たいてい追加した専用のスレッドで動作する)
というもの。対象は Objective-C/Cocoa に限らず、破壊力満点。
RubyInject では、指定したプロセスに dRuby のクチを用意して、そこと通信できるようになるっぽい。で、dRuby でのオブジェクトの受け渡しがこっそり RubyCocoa になっていたりする。いまのところ、Leopard でないと動かないらしい(例によってスレッドの問題)。実行できて、じゃあ何をしようかって考えると、あんま思いつかないな。