2014-08-30 44 views
0

我试图把命令来调用测试一个Rake文件里面,像这样的输出:从Rake任务调用后卫抑制

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

虽然命令:bundle exec guard --clear运行完美,否则;当通过Rake任务调用它时,测试输出似乎被压制。只有运行规范或启动Guard等通知正在输出。

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

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

回答

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)) 
+0

你的意思是说,这保持打印命令完成之前的输出?我很抱歉,我不记得我正在使用这个项目来测试它。 – 2014-12-17 09:55:29