@m_seki の

I like ruby tooから引っ越し

講義先の環境で確認してもらうこと2

irbで実習できるか確認する。

1. irbが使えるか?

コンソール1で、「irb -r drb」が動くか?

C1$ irb -r drb
irb(main):001:0> exit
C1$

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