RSpec的。如何为管道或重定向输出着色?

时间:2011-02-03 07:11:03

标签: ruby rspec bdd

在2.0之前的RSpec版本中,我可以将颜色输出传输给less或将其重定向到文件。为了做到这一点,我只需要将RSPEC_COLOR环境变量设置为true。但是,在框架的新主要版本中,此变量已停止以定义输出类型(颜色或monchrome)。有没有办法在RSpec 2.0及更高版本中管道或重定向颜色?

感谢。

Debian GNU / Linux 5.0.7;

Ruby 1.9.2;

RSpec 2.4.0。

更新


我自己找到了答案。

应该使用tty配置选项来实现效果。

以下是示例:

# spec/spec_helper.rb

RSpec.configure do |config|
  config.tty = true
end

3 个答案:

答案 0 :(得分:1)

通过查看sources,似乎color_enabled配置选项现在位于RSpec的配置模块中。但是,如果没有输出tty,color is disabled

我的建议是设置color_enabled = true并修改RSpec配置模块,这样即使不输出到tty也能正常工作:

module RSpec   
  module Core
    class Configuration
      def color_enabled
        true
      end
    end
  end
end

但这并不是最好的方式。这也是未经测试的,我认为猴子修补rspec并不是最简单的事情,因为通常测试是通过专用命令行工具运行的。

也许您可以向维护者打开错误报告并要求force_color_enabled选项?它可能会很快实施......

祝你好运,快乐的编码!

答案 1 :(得分:1)

这很简单:

# spec/spec_helper.rb

RSpec.configure do |config|
  config.color_enabled = true
end

答案 2 :(得分:1)

问题的答案是正确答案:

# spec/spec_helper.rb

RSpec.configure do |config|
  config.tty = true
end

然后rspec | grep --color="never" something保持着色。