如何全局配置RSpec以保持“ --color”和“ --format specdoc”选项处于打开状态


156

如何在Ubuntu中为RSpec设置全局配置。

特别是,--color和--format specdoc在所有项目中均保持打开状态(即,每次在任何地方运行rspec时)。

Answers:


238

如您在此处的文档中所见,预期用途是创建~/.rspec并在其中放置您的选项,例如--color

~/.rspec使用该--color选项快速创建文件,只需运行:

echo '--color' >> ~/.rspec 

17
--tty如果即使在使用传呼机时也想要彩色,则也是必需的。
亚当·斯皮尔斯

2
使用.rspecor的利弊是spec_helper.rb什么?@shamaoke @christoph
Ian Vaughan

2
~/.rspec解决方案的一大优势是可移植性。例如,我们的CI服务器不能很好地处理颜色输出。使用用户目录配置文件,我们可以轻松地采用不同的环境。
Christoph Petschnig 2014年

2
另一个相关说明是,您可以在项目级别创建.rspec文件,并将其仅应用于该项目。只是以为有些人可能也想在这里知道这一点。
Nick Gronow 2014年

将我的配置选项从spec_helper.rb移到.rspec可以为我解决此问题。
爱德华·安德森

149

一个人也可以spec_helper.rb在所有项目中使用文件。该文件应包括以下内容:

RSpec.configure do |config|
  # Use color in STDOUT
  config.color = true

  # Use color not only in STDOUT but also in pagers and files
  config.tty = true

  # Use the specified formatter
  config.formatter = :documentation # :progress, :html,
                                    # :json, CustomFormatterClass
end

任何示例文件都必须要求助手能够使用该选项。


1
最初的问题要求全局配置,这是一个特定于项目的配置。有用,但不是正确答案,与abyx指向.rspec文件的答案不同。
奥利维尔·拉坎

8
搜索有关RSpec配置和格式化程序的信息会将其带到此页面,所以即使您输入了错误的问题,我也很感激此答案:-)
phatmann

3
color_enabled现在color
elado

12

spec_helper.rb文件中,包括以下选项:

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

然后,您必须在每个*_spec.rb应使用该选项的文件中要求。


您好,谢谢-您能否详细说明以下内容:“然后,您必须在每个应使用该选项的* _spec.rb文件中进行要求。” 我不明白。
BKSpurgeon '16

每个* _spec.rb文件通常以require“ spec_helper”开头,您不要忘记这一点。
Christoph Petschnig


2

或者alias spec=spec --color --format specdoc像我一样简单地添加到您的〜/ .bashrc文件中。


5
该解决方案不是很便携。正确的答案是@abyx使用using .rspec,因为当它在项目中签入时,其他获得它的人将获得相同的设置。
伊恩·沃恩

1
但是问题是关于“ Ubuntu中RSpec的全局配置”,“整个我的所有项目”而不是可移植或合作模式。
zzeroo 2011年

3
嗯,我想您是对的,您的回答确实与OP有关。我当时正在考虑更大的前景,但是我仍然认为更好的答案是@abyx,如果OP习惯于正确地配置项目,那么其他人将受益,也许现在不是,因为他可能是单独工作,但好的做法就是这样。抱歉,有点担保,只是我的想法。
伊恩·沃恩

1
@zzeroo @Ian:请注意,将.rspec文件放置在用户的主目录中(正如我在回答中提到的那样)对于rspec的所有用户调用都是全局的。实际上,这比使用别名更可靠,因为用户可能使用的某些gem /其他别名/工具不一定会使用别名
abyx 2012年

1
现在回到这个问题,并且变老了一些,变得更聪明了,我同意设置.rspec点文件现在是一个更好的选择。正在更新我对abyx的批准答案,非常感谢zzero在2010
Evolve

1

要注意的一件事是运行RSpec的不同方式的影响。

我试图用spec / spec_helper.rb中的以下代码打开该选项-

Rspec.configure do |config|
  config.tty = $stdout.tty?
end
  1. 直接调用“ rspec”二进制文件-或作为“ bundle exec rspec”并检查$ stdout.tty?将返回true。
  2. 调用'rake spec'任务-或作为'bundle exec rake spec'-Rake将在单独的进程中调用rspec,以及$ stdout.tty?将返回false。

最后,我使用了〜/ .rspec选项,仅使用--tty作为其内容。对我来说效果很好,并保持CI服务器输出的整洁。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.