きりかノート 3冊め

おあそびプログラミング

RubyInject でプロセスにもぐりこめ!

Laurent が彼の日記で新作 RubyInject に触れていたので見てみる&軽く紹介。これは mach_starRuby で使えるようにするもの。PyObjC には以前から objc.inject (サンプル) というものがあって、それの Ruby/RubyCocoa 版と言ってよいだろう。たぶん。

mach_starは

  • 既存のシンボルを別の関数でオーバーライドできる
  • 実行中のプロセスに任意のモジュールをロードできる(たいてい追加した専用のスレッドで動作する)

というもの。対象は Objective-C/Cocoa に限らず、破壊力満点。

RubyInject では、指定したプロセスに dRuby のクチを用意して、そこと通信できるようになるっぽい。で、dRuby でのオブジェクトの受け渡しがこっそり RubyCocoa になっていたりする。いまのところ、Leopard でないと動かないらしい(例によってスレッドの問題)。実行できて、じゃあ何をしようかって考えると、あんま思いつかないな。