Mat*_*dan 6 ruby colors ansi-escape
我试图让watchr在文件发生变化时自动运行测试,并获得我需要的大部分工作,除了RSpec的所有ANSI颜色都被忽略了.违规代码如下:
stdin, stdout, stderr = Open3.popen3(cmd)
stdout.each_line do |line|
last_output = line
puts line
end
Run Code Online (Sandbox Code Playgroud)
当cmd等于类似的东西时rspec spec/**/*.rb,上面的代码运行RSpec很好,除了所有输出都是单色的.我已经看过使用了Kernel.system,但系统没有返回输出,我需要确定测试是否失败/成功.如何从Ruby中执行包含ANSI颜色的脚本获取输出,并将其输出到控制台?
我猜想rspec正在检查它正在写入输出的流以查看它是否是tty(即控制台),如果不是,则禁用颜色.许多命令都是这样做的 - 例如GNU ls和grep.由于从子进程到脚本的流不是tty,因此将禁用颜色.
希望rspec有一个标志,它将强制使用颜色,而不管流类型如何.如果没有,你将不得不诉诸一些真正奇怪的stty shenanigans.
| 归档时间: |
|
| 查看次数: |
869 次 |
| 最近记录: |