gpt4 book ai didi

Ruby popen3 和 ANSI 颜色

转载 作者:数据小太阳 更新时间:2023-10-29 07:04:03 26 4
gpt4 key购买 nike

我正在尝试让 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 恶作剧。

关于Ruby popen3 和 ANSI 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5526842/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com