From: "U.Nakamura" Date: 2006-02-27T14:25:26+09:00 Subject: [ruby-dev:28400] Re: test/drb/drbtest.rb cause file missing error こんにちは、なかむら(う)です。 In message "[ruby-dev:28390] Re: test/drb/drbtest.rb cause file missing error" on Feb.24,2006 21:41:41, wrote: | 連絡が遅れましたが、先ほどcommitしました。 | artonさん、ありがとうございます。 | | * http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/test/drb/drbtest.rb?cvsroot=src&r1=1.18&r2=1.19 | | * http://www.ruby-lang.org/cgi-bin/cvsweb.cgi/ruby/test/drb/drbtest.rb?cvsroot=src&r1=1.5.2.10&r2=1.5.2.11 えーと、これなんですが、lib/drb/extservm.rbの DRb::ExtServManager#invoke_service_commandの中で system("cmd /c start /b #{command} #{uri} #{name}") とやってる部分がありまして、Windows XPのstartコマンドは先頭の 引数が""でくくられている場合に、これをコマンド名でなくタイト ル文字列として扱うため、commitされたように変更されてしまうと、 コマンドを起動できなくなります。 artonさんのところでうまくいってるとしたら、それは多分.rbが関 連付けされているのでしょう。 WinMeのstartコマンドにはこういう余計な機能がないので、今回の 変更があってもうまく動く... と言いたいところですが、WinMeには cmdコマンドがないのでどっちにしろ上記引用部分が原因で動作しな さそうです。 結論としては、次のようなパッチを入れていただくのがいいのでは ないかと思うのですが、いかがなものでしょうか? Index: lib/drb/extservm.rb =================================================================== RCS file: /home/cvs/ruby/lib/drb/extservm.rb,v retrieving revision 1.1.2.1 diff -u -1 -p -r1.1.2.1 extservm.rb --- lib/drb/extservm.rb 8 Nov 2004 14:38:58 -0000 1.1.2.1 +++ lib/drb/extservm.rb 27 Feb 2006 05:23:57 -0000 @@ -88,4 +88,4 @@ module DRb uri = @uri || DRb.uri - if RUBY_PLATFORM =~ /mswin32/ - system("cmd /c start /b #{command} #{uri} #{name}") + if RUBY_PLATFORM =~ /mswin32/ && /NT/ =~ ENV["OS"] + system(%Q'cmd /c start "ruby" /b #{command} #{uri} #{name}') else Win9x系のstartコマンドには /b オプションもないことから、そも そもstartコマンドを経由する意味もなさそうなのでこうしてみまし た。 それでは。 -- U.Nakamura