我在工作中使用的构建系统调用了几个外部控制台应用程序,Node.js等。
我看到的问题是在调用Open3.capture3
后,STDOUT频道似乎无效。例如,我有一个名为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
调用后的任何内容都会禁用puts
和print
。我可以通过明确使用:
STDOUT.puts "goodbye world"
我只是想知道它为什么不起作用。
规格:
答案 0 :(得分:1)
您使用> output/css/bootstrap.min.css
重定向了命令行的STDOUT。
capture3()
的STDOUT当然是空的。