@m_seki の

I like ruby tooから引っ越し

1プロセスで複数のDRbServer

こっちが本題だったか。

DRb::DRbServerをnewすれば一つのプロセスで複数のDRbServerを持てます。それぞれに待ち受けスレッドが生成されます。

サーバがリモートからのメソッドを処理するコンテキスト内(スレッド内)でDRbObjectを生成するとき、そのメソッドを担当しているDRbServerへの参照が生成されます。あるコンテキストにおいて、そのきっかけとなったリモートからの呼び出しを受け付けたDRbServerがカレントサーバです。きっかけがリモートからの呼び出しでない場合には、プライマリサーバがカレントサーバとなります。プライマリサーバは一番最初に生成されたDRbServer、あるいはDRb.start_serviceで生成したDRbServerです。
こういうことは通常は意識しなくて良いように設計されていますが、こういう機会に書いてみることにしました。

ライブラリの中でこっそりdRubyのサービスを使いたいときは、DRbServer.newするとよいかも。まあ、アプリケーションが知らないうちにdRubyのサービスを行ってて良いのかよ、って気もするけどそれはドキュメントに書くのかな。リモートからアタッチできるデバッガとかちょっとした検査ツールなんか、どうかなあ。