来自ruby命令的输出未在STDOUT中显示

时间:2014-03-06 22:23:23

标签: ruby macos bash terminal

我有以下脚本输出在我对另一个文件进行更改时呈现的文件的名称:

jade --watch --pretty index.jade

由于我在项目中使用了很多,所以我决定创建一个执行此操作的rake任务。但是当我启动rake任务时,文件会被渲染,但我不再看到输出。

我知道在这种情况下输出以某种方式流式传输到STDOUT,这似乎与执行一个ls命令的行为不同。

这是我的Rakefile:

desc 'Watch .jade files'
task :watch do
  puts `jade --watch --pretty index.jade`
end

1 个答案:

答案 0 :(得分:1)

你没有看到任何输出的原因是jade在运行时会阻塞,只有在你杀死它时才会返回。如果你要杀了它,你会看到puts生效。

您想要的是使用system

system("jade --watch --pretty index.jade")

哪个会使用您的流程的STDOUT。