[#28337] constant look up order in CVS HEAD — Yukihiro Matsumoto <matz@...>

まつもと ゆきひろです

15 messages 2006/02/18
[#28338] Re: constant look up order in CVS HEAD — Tanaka Akira <akr@...17n.org> 2006/02/19

In article <1140229116.805371.31930.nullmailer@x31.priv.netlab.jp>,

[#28341] Re: constant look up order in CVS HEAD — GOTOU Yuuzou <gotoyuzo@...> 2006/02/19

In message <87lkw8xfay.fsf@m17n.org>,

[#28342] Re: constant look up order in CVS HEAD — Yukihiro Matsumoto <matz@...> 2006/02/19

まつもと ゆきひろです

[ruby-dev:28400] Re: test/drb/drbtest.rb cause file missing error

From: "U.Nakamura" <usa@...>
Date: 2006-02-27 05:25:26 UTC
List: ruby-dev #28400
こんにちは、なかむら(う)です。

In message "[ruby-dev:28390] Re: test/drb/drbtest.rb cause file missing error"
    on Feb.24,2006 21:41:41, <m_seki@mva.biglobe.ne.jp> 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 <usa@garbagecollect.jp>



In This Thread