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を終了させてください。