从Rake任务调用后卫抑制
问题描述:
我试图把命令来调用测试一个Rake文件里面,像这样的输出:从Rake任务调用后卫抑制
desc 'Start tests'
task :test do
%x{ bundle exec guard --clear }
end
虽然命令:bundle exec guard --clear
运行完美,否则;当通过Rake任务调用它时,测试输出似乎被压制。只有运行规范或启动Guard等通知正在输出。
注:我知道测试确实工作,因为我有另一个通过tmux窗格颜色的通知系统。
我认为,我构建Rake任务的方式有问题吗?有任何想法吗?
答
是的,在打印任何输出之前,%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))
你的意思是说,这保持打印命令完成之前的输出?我很抱歉,我不记得我正在使用这个项目来测试它。 – 2014-12-17 09:55:29