0

私が仕事で使用しているビルド システムは、いくつかの外部コンソール アプリケーション (特に Node.js) を呼び出します。

私が見ている問題は、STDOUT チャネルOpen3.capture3が呼び出された後に機能しないように見えることです。たとえば、次のようなタスクがありますcompileLess

desc "Compile LESS"
task :compileLess do
   puts "Preparing to compile LESS..."
   execute "recess less/bootstrap.less --compress > output/css/bootstrap.min.css"
   puts "Finished compiling LESS"
end


def execute(cmdLine, print_stdout = false)
   puts "Executing #{cmdLine}"
   stdout, stderr, status = Open3.capture3(cmdLine)
   puts stdout if print_stdout
   return stdout, stderr, status
end

私が期待するのは次のようなものです。

Preparing to compile LESS...
Executing recess less/bootstrap.less --compress > output/css/bootstrap.min.css
Finished compiling LESS

しかし、Open3.capture3disablesputsおよびprint. 以下を明示的に使用して、それらを強制的に機能させることができます。

STDOUT.puts "goodbye world"

なぜうまくいかないのか知りたいだけです。

仕様:

  • ウィンドウ 7 プロフェッショナル 32 ビット
  • ルビー 1.9.3p392 (2013-02-22) [i386-mingw32]
  • レーキ、バージョン 10.1.0
  • ノード v0.10.22
4

1 に答える 1