从Rake任务调用guard会抑制输出

时间:2014-08-30 07:26:45

标签: ruby command-line rake guard

我正在尝试将命令放在Rakefile中调用测试,如下所示:

desc 'Start tests'
task :test do
  %x{ bundle exec guard --clear }
end

虽然命令:bundle exec guard --clear运行得很好;通过Rake任务调用时,测试输出似乎被抑制了。仅输出运行规范或启动Guard等通知。

注意:我知道测试确实有效,因为我有另一个通过tmux窗格颜色的通知系统。

我认为,构建Rake任务的方式有问题吗?有什么想法吗?

1 个答案:

答案 0 :(得分:1)

是的,%x在打印任何输出之前等待命令完成。

示例:

puts %x{ sleep 1; echo "hello"; sleep 2; echo "world"; }

(在完成之前不会显示任何输出 - 然后它会立即显示所有内容。)

示例2:

puts %x{ echo "hello"; sleep 100; }

(直到100秒后才会显示任何内容。)

你想要的是:

Kernel.system("bundle exec guard --clear")

Kernel.system(%w(bundle exec guard --clear))