在使用 Open3.capture3 和 rake 时丢失 STDOUT



我在工作中使用的构建系统调用了几个外部控制台应用程序,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 之后的任何内容都会禁用putsprint。我可以通过显式使用以下命令来强制它们工作:

STDOUT.puts "goodbye world"

我只想知道为什么它不起作用。

规格:

  • 窗口 7 专业 32 位
  • 红宝石 1.9.3p392 (2013-02-22) [i386-mingw32]
  • Rake,版本 10.1.0
  • 节点 v0.10.22

您使用 > output/css/bootstrap.min.css 重定向了命令行的 STDOUT

当然,您来自capture3()的STDOUT是空的。

相关内容

  • 没有找到相关文章

最新更新