加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby popen3和ANSI颜色

发布时间:2020-12-16 22:47:25 所属栏目:百科 来源:网络整理
导读:我试图让watchr在文件发生变化时自动运行测试,并获得我需要的大部分工作,除了RSpec的所有ANSI颜色都被忽略了.违规代码如下: stdin,stdout,stderr = Open3.popen3(cmd)stdout.each_line do |line| last_output = line puts lineend 当cmd等于类似于rspec spe
我试图让watchr在文件发生变化时自动运行测试,并获得我需要的大部分工作,除了RSpec的所有ANSI颜色都被忽略了.违规代码如下:
stdin,stdout,stderr = Open3.popen3(cmd)
stdout.each_line do |line|
  last_output = line
  puts line
end

当cmd等于类似于rspec spec / ** / * .rb时,上面的代码运行RSpec很好,除了所有输出都是单色的.我已经看过使用Kernel.system,但系统不会返回我需要确定测试失败/成功的输出.如何从Ruby中执行包含ANSI颜色的脚本获取输出,并将其输出到控制台?

解决方法

我猜想rspec正在检查它正在写入输出的流以查看它是否是tty(即控制台),如果不是,则禁用颜色.许多命令都是这样做的 – 例如GNU ls和grep.由于从子进程到脚本的流不是tty,因此将禁用颜色.

希望rspec有一个标志,它将强制使用颜色,而不管流类型如何.如果没有,你将不得不诉诸一些真正奇怪的stty shenanigans.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读