我正在尝试将命令放在Rakefile中调用测试,如下所示:
desc 'Start tests'
task :test do
%x{ bundle exec guard --clear }
end
虽然命令:bundle exec guard --clear
运行得很好;通过Rake任务调用时,测试输出似乎被抑制了。仅输出运行规范或启动Guard等通知。
注意:我知道测试确实有效,因为我有另一个通过tmux窗格颜色的通知系统。
我认为,构建Rake任务的方式有问题吗?有什么想法吗?
答案 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))