[#23884] Ruby 1.8.2 preview1にむけて — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

34 messages 2004/07/13
[#23917] Re: Ruby 1.8.2 preview1にむけて — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/07/16

山本です。

[#23920] Re: Ruby 1.8.2 preview1にむけて — "NAKAMURA, Hiroshi" <nakahiro@...> 2004/07/16

なひです。

[#23922] ruby 1.8.2 preview1 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

27 messages 2004/07/16

[#23995] String#each -> String#each_char — Shugo Maeda <shugo@...>

前田です。

27 messages 2004/07/30
[#23996] Re: String#each -> String#each_char — matz@... (Yukihiro Matsumoto) 2004/07/30

まつもと ゆきひろです

[#23997] Re: String#each -> String#each_char — "U.Nakamura" <usa@...> 2004/07/30

こんにちは、なかむら(う)です。

[#23999] Re: String#each -> String#each_char — matz@... (Yukihiro Matsumoto) 2004/07/30

まつもと ゆきひろです

[#24000] Re: String#each -> String#each_char — "U.Nakamura" <usa@...> 2004/07/30

こんにちは、なかむら(う)です。

[#24005] Re: String#each -> String#each_char — Minero Aoki <aamine@...> 2004/07/31

青木です。

[#24012] Re: String#each -> String#each_char — Shugo Maeda <shugo@...> 2004/08/01

前田です。

[#24014] Re: String#each -> String#each_char — Minero Aoki <aamine@...> 2004/08/02

青木です。

[ruby-dev:23927] Re: Ruby 1.8.2 preview1にむけて

From: "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>
Date: 2004-07-16 12:50:15 UTC
List: ruby-dev #23927
山本です。

IO.popen のコマンドである webrick/httpservlet/cgi_runner.rb をトレースしてみたところ、
26行目の STDOUT.reopen(open(out, "w")) で固まっていることがわかりました。
そこで、ここをコメントアウトしたところ、test/soap/calc/server.cgi を exec する所まで行きました。
しかし、今度は test/soap/calc/server.cgi の require 'soap/rpc/cgistub' から帰ってきません。

そこで soap/rpc/cgistub.rb の require 部分を

p "===========> 0"
require 'soap/streamHandler'
p "===========> 1"
require 'webrick/httpresponse'
p "===========> 2"
require 'webrick/httpstatus'
p "===========> 3"
require 'logger'
p "===========> 4"
require 'soap/rpc/router'
p "===========> 5"

というようにトレースしてみたのですが、4 まで行ったところでタイムアウトして
しまいました。

単に require 'soap/rpc/cgistub' と書いたスクリプトを実行した場合には、
0 から 4 までがすぐに表示され、5 が表示されるのに若干時間がかかるものの、
全体として 7 秒ほどで処理が終わります。

これと比べると、test のときは何倍も遅くなっている感じです。なぜ遅くなるのか
はよくわかりませんが、タイムアウトの時間を長くすれば、処理が全部終わる
のではないかと思います。(タイムアウトの時間を長くしようと思ったのですが、
場所がわかりませんでした)

あと、STDOUT.reopen ですが、irb 上から実行すると再現しました。HEAD でも
同じです。

E:\ruby_1_8\bin>irb
irb(main):001:0> STDOUT.reopen(open('e:/hoge', 'w'))
(フリーズ。CTRL+C も効かない)

E:\ruby_1_8\bin>irb
irb(main):001:0> STDERR.reopen(open('e:/hoge', 'w'))
=> #<File:e:/hoge>
irb(main):002:0>
(成功)

でも、スクリプトだと動くのです。

E:\ruby_1_8\bin>type ..\a.rb
STDOUT.reopen(open("e:/hoge", "w"))
puts "foo/bar"

E:\ruby_1_8\bin>ruby ..\a.rb

E:\ruby_1_8\bin>type e:\hoge
foo/bar

よくわかりません。


In This Thread