私が仕事で使用しているビルド システムは、いくつかの外部コンソール アプリケーション (特に 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.capture3
disablesputs
およびprint
. 以下を明示的に使用して、それらを強制的に機能させることができます。
STDOUT.puts "goodbye world"
なぜうまくいかないのか知りたいだけです。
仕様:
- ウィンドウ 7 プロフェッショナル 32 ビット
- ルビー 1.9.3p392 (2013-02-22) [i386-mingw32]
- レーキ、バージョン 10.1.0
- ノード v0.10.22