marloweは利用したことないなあ。立石の駐車場にはよく通ったけど。海側に停めると波をかぶるんだよね‥。
「夜のmarlowe」より夕日くらいの時間があぶないかも。なんとなくニシノユキヒコの恋と冒険 (新潮文庫)読みたくなる。
1プロセスで複数のDRbServer
こっちが本題だったか。
DRb::DRbServerをnewすれば一つのプロセスで複数のDRbServerを持てます。それぞれに待ち受けスレッドが生成されます。
サーバがリモートからのメソッドを処理するコンテキスト内(スレッド内)でDRbObjectを生成するとき、そのメソッドを担当しているDRbServerへの参照が生成されます。あるコンテキストにおいて、そのきっかけとなったリモートからの呼び出しを受け付けたDRbServerがカレントサーバです。きっかけがリモートからの呼び出しでない場合には、プライマリサーバがカレントサーバとなります。プライマリサーバは一番最初に生成されたDRbServer、あるいはDRb.start_serviceで生成したDRbServerです。
こういうことは通常は意識しなくて良いように設計されていますが、こういう機会に書いてみることにしました。
ライブラリの中でこっそりdRubyのサービスを使いたいときは、DRbServer.newするとよいかも。まあ、アプリケーションが知らないうちにdRubyのサービスを行ってて良いのかよ、って気もするけどそれはドキュメントに書くのかな。リモートからアタッチできるデバッガとかちょっとした検査ツールなんか、どうかなあ。
- 10. sshポートフォワーディングの利用 - 利用例