[#39989] TCPSocket.new でスレッドが止まる。 — take_tk <ggb03124@...>

たけ(tk)です。

15 messages 2004/09/02

[#40018] yaml.rbとdate.rbを組み合わせて使った際の問題 — "Keisuke Minami" <keisuke@...>

こんにちは。三並と申します。

14 messages 2004/09/07
[#40020] Re: yaml.rbとdate.rbを組み合わせて使った際の問題 — IWATSUKI Hiroyuki <don@...> 2004/09/07

岩月と申します。

[ruby-list:40065] サンプルが動きません("dRuby による分散オブジェクトプログラミング")

From: 植田裕之 <ueda@...>
Date: 2004-09-23 07:44:30 UTC
List: ruby-list #40065
植田@ネットフォレストと申します。


 こちらで聞いて良いか迷ったのですが... もしマズければご指摘下さい。

----
咳さんの "dRuby による分散オブジェクトプログラミング"(ASCII 刊) を購入し
て dRuby の勉強を始めたのですが、3章辺りからサンプルプログラムがエラーを
出力するようになりました。サンプルプログラムは添付の 2つ(tick.rb,
clock.rb - p.38) で、

	% ruby tick.rb druby://127.0.0.1:11111
	% ruby clock.rb druby://127.0.0.1:11111

を 2つの terminal にて実行するのですが、clock.rb を実行すると

(druby://127.0.0.1:11111) /usr/local/lib/ruby/1.8/drb/drb.rb:706:in `open': druby://hoge.example.jp:62600 - #<Errno::ECONNREFUSED: Connection refused - connect(2)> (DRb::DRbConnError)
	from (druby://127.0.0.1:11111) /usr/local/lib/ruby/1.8/drb/drb.rb:699:in `each'
	from (druby://127.0.0.1:11111) /usr/local/lib/ruby/1.8/drb/drb.rb:699:in `open'
	from (druby://127.0.0.1:11111) /usr/local/lib/ruby/1.8/drb/drb.rb:1098:in `initialize'
	from (druby://127.0.0.1:11111) /usr/local/lib/ruby/1.8/drb/drb.rb:1078:in `new'
	from (druby://127.0.0.1:11111) /usr/local/lib/ruby/1.8/drb/drb.rb:1078:in `open'
	from (druby://127.0.0.1:11111) /usr/local/lib/ruby/1.8/drb/drb.rb:1014:in `method_missing'
	from (druby://127.0.0.1:11111) /usr/local/lib/ruby/1.8/observer.rb:125:in `add_observer'
	from clock.rb:8:in `initialize'
	from clock.rb:20:in `new'
	from clock.rb:20

というエラーが出力されます。実行環境は FreeBSD 5.3-BETA4 で Ruby は 
ports から入れた ruby-1.8.2.p2_1、dRuby は ruby 付属のもの(version 2.0.4) 
です。

	% ruby -v
	ruby 1.8.2 (2004-07-29) [i386-freebsd5]

書籍の前提が ruby-1.6.4, drb-1.3.2 なのは承知しているのですが、ruby 1.8 
で動かしてみたいと思いまして...


ruby をいじり始めてから日が浅いのですが、面白そうなので dRuby にも手を出
してしまいました。ご教授いただければ幸いです。


-- 
植田裕之 <ueda@netforest.ad.jp>

Attachments (2)

tick.rb (399 Bytes, text/x-ruby)
require 'drb/drb'
require 'observer'

class Tick
  include Observable

  def start
	loop do
	  sleep 0.999
	  now = Time.now
	  changed
#	  notify_observers(now.hour, now.min, now.sec)
	end
  end
end

tick = Tick.new
uri = ARGV.shift || raise("usage: {$0} <URI>")
uri = 'druby://127.0.0.1:11111'
DRb.start_service(uri, tick)
Thread.new do
  tick.start
end

puts DRb.uri
puts '[return] to exit'
gets
clock.rb (362 Bytes, text/x-ruby)
require 'drb/drb'

class Clock
  include DRbUndumped

  def initialize(tick)
	@tick = tick
	@tick.add_observer(self)
  end

  def update(h, m, s)
	printf "\e[8D%02d:%02d:%02d", h, m, s
	STDOUT.flush
  end
end

uri = ARGV.shift || raise("usage: #{$0} <URI>")
DRb.start_service
tick = DRbObject.new(nil, uri)
clock = Clock.new(tick)

puts '[return] to exit.'
gets

In This Thread

Prev Next