我在工作中使用的构建系统会调用几个外部控制台应用程序,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