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.capture3disablesputsprint. 我可以通过明确使用来强制他们工作:

STDOUT.puts "goodbye world"

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

眼镜:

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

1 回答 1

1

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

你的 STDOUTcapture3()当然是空的。

于 2013-11-13T20:22:15.753 回答