@m_seki の

I like ruby tooから引っ越し

DRb::GWは連休とは関係がない

なんかほってんとりめーかーがうまく動いてないような...。

DRb::GWがよくできててびっくり。わたし、すげー。
druby.orgのDripサーバは「drbunix:/home/seki/.drip/port」というUNIXドメインソケットで動いてます。UNIXドメインなのでそのマシンからでないと触れないはずです。
でさ、ふつうは手元のMacBookからdruby.orgのDripのデータを処理してみたいなーと思うじゃん?幸福の王子本の最後に紹介されてるDRb::GWの節を、ほんとに読みながら解決しました。

require 'drb/drb'
require 'drb/gw'

DRb.install_id_conv(DRb::GWIdConv.new)

drip = DRbObject.new_with_uri('drbunix:' + File.expand_path('~/.drip/port'))

DRb::DRbServer.new('druby://localhost:54321', DRb::GW.new)
ro = DRbObject.new(DRb.front)
ro[:drip] = drip
DRb.thread.join

DRb::GWIdConvとDRb::GWの組で使います。GWIdConvはDRbObjectを取り出すときに細工する係で、RMIがこのプロセスを経由するように書き換えます。GWはふつうのHashに排他制御をつけた程度の簡単なもので、なくてもまあ動きます。RMI経由でDRb::GWに設定されたDRbObjectを取り出すとき、取り出しのRMIを担当したDRbServerを経由するようにDRbObjectがラップされます。

$ ssh -L 54321:localhost:54321 seki@www.druby.org
...
$ ruby tgw.rb

のようにsshでポートフォワーディングして、さっきのスクリプトを実行。
手元のマシンからirbして

$ irb -r drb
irb(main):001:0> gw = DRbObject.new_with_uri('druby://localhost:54321')
=> #<DRb::GW:0x8252bfc>
irb(main):002:0> drip = gw[:drip]
=> #<Drip:0x8384f98>
irb(main):003:0> k, v = drip.head[0]
=> [1304969714891437, {"id_str"=>"67674004709838848", "text"=>".... 

あー、うごいたうごいた。