なかだです。

At Thu, 29 Apr 2010 20:31:51 +0900,
Tanaka Akira wrote in [ruby-dev:41100]:
> これはあまり良くないように思います。
> 
> String#dump は Ruby が解釈する文字列リテラルを生成するものであって、
> シェルが解釈する文字列を生成するものではありません。

良くないことには同意します。

> ここでは Open3.popen3 に渡す、つまりシェルに解釈してもらう文字列を
> 生成しているので、String#dump は用途にあっていません。

そもそもここでは何をテストしようとしているんでしょうか。
Shellwords.joinがsystemに渡せる文字列を作ること? 単に引数を含む
コマンドラインを実行できるかというテストなら、これでいいのではな
いかと思いますが。

    commandline = "echo quux"
    Open3.popen3(commandline) {|i,o,e,t|
      assert_equal("quux\n", o.read)
    }

> 現状 shellwords が Windows で適切に動かないというなら、
> shellwords を直すのが適切なんじゃないでしょうか。

Windowsでは「適切なシェルエスケープ」というものが一意に決まらな
いというのが根本的な問題ではないかと。

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦