2011-02-03 55 views
5

在RSpec 2.0之前的版本中,我可以将颜色输出管道化为更少或将其重定向到文件。为了做到这一点,我只需将RSPEC_COLOR环境变量设置为true即可。但是,在框架的新主版本中,此变量已停止以定义输出类型(颜色或单色)。是否有任何方法来管道或重定向RSpec 2.0和更高的颜色?RSpec。如何为管道输出或重定向输出着色?

谢谢。

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 

回答

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不是最简单的事情,因为通常测试是通过专用命令行工具运行的。

也许你可以打开一个bug报告给维护者,并要求force_color_enabled选项?它可能会很快实施...

好运和快乐编码!

+0

谢谢你的答案,** Oct **。我自己解决它。请参阅我答案中的**更新**部分。 – Shamaoke 2011-06-29 15:03:30

+0

顺便说一句,我有一个[问题](https://github.com/rspec/rspec-core/issues/326)在Github上打开,但我没有回答,必须自己找到解决方案。 – Shamaoke 2011-06-29 15:10:49

1

很简单:

# spec/spec_helper.rb 

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

在这个问题的答案是正确的:

# spec/spec_helper.rb 

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

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