irbで実習できるか確認する。
2. irbからdRubyを利用できるか?
Queueサーバを用意。
# q.rb require 'drb/drb' require 'thread' DRb.start_service('druby://localhost:54321', Queue.new) while true sleep 1 end
コンソール1でq.rbを起動
C1$ ruby q.rb (なにも出力されません)
コンソール1を起動したままで、コンソール2でirbを起動
C2$ irb -r drb
irb(main):001:0> DRb.start_service
=> #<DRb::DRbServer:0x15a374 ....>
irb(main):002:0> ro = DRbObject.new_with_uri('druby://localhost:54321')
=> ....
irb(main):003:0> ro.push('Hello, World.')
=> ....
irb(main):004:0> ro.pop
=> "Hello, World."コンソール3から、もう一つirbを起動。
C3$ irb -drb
irb(main):001:0> DRb.start_service
=> ....
irb(main):002:0> ro = DRbObject.new_with_uri('druby://localhost:54321')
=> ....
irb(main):003:0> ro.pop
(ブロックされ、何も出力しません)コンソール2のirbで、ro.push('Hello, Again')する
(C2: つづき)
irb(main):005:0> ro.push('Hello, Again.')
=> ....コンソール3で動作が再開する(はず)
(C3: つづき) irb(main):003:0> ro.pop => "Hello, Again."
コンソール1, 2, 3を終了させてください。