@m_seki の

I like ruby tooから引っ越し

idrbか、dirbか

dRubyでちょっとした実験をする際に、スクリプトの代わりにirbを使うのは勤勉な咳のTips。

cinq:~ mas$ irb -r drb
irb(main):001:0> DRb.start_service(nil, {})
=> #<DRb::DRbServer:0x58f5fc ....
irb(main):002:0> DRb.uri
=> "druby://cinq.local:59535"

いつもいつもとりあえずDRb.start_serviceしてたので、ファイルによけてみた。ここで一番問題になるのは、「idrb」とするか「dirb」とするか。irbに敬意を表し「i」を前にすることとする。なお、モデリングはしていない。

cinq:~ mas$ cat /usr/local/lib/ruby/site_ruby/1.8/idrb.rb 
require 'drb/drb'

DRb.start_service(nil, {})

irb -rして使います。

cinq:~ mas$ irb -r idrb
irb(main):001:0> DRb.uri
=> "druby://cinq.local:49326"
irb(main):002:0> DRb.front
=> {}

DRb.frontがHashなのはいろいろ便利だから。オプション付きのURIも使えるしね。

irb -r idrbが面倒な怠惰な人のために、idrbという作戦もあるです。

cinq:~ mas$ cat /usr/local/bin/idrb 
#!/usr/local/bin/ruby

require "irb"
require "drb/drb"

DRb.start_service(nil, {})

if __FILE__ == $0
  IRB.start(__FILE__)
else
  # check -e option
  if /^-e$/ =~ $0
    IRB.start(__FILE__)
  else
    IRB.setup(__FILE__)
  end
end

irbをコピーして二行増やしただけですけどね。ちょっとお得。

cinq:~ mas$ idrb
irb(main):001:0> exit
cinq:~ mas$ idrb
irb(main):001:0> DRb.uri
=> "druby://cinq.local:49389"
irb(main):002:0> DRb.front
=> {}

そろそろ気づいちゃったかもしれませんが、irindaというDRb.frontをTupleSpaceProxyにしたirbが‥‥