Como configurar globalmente o RSpec para manter as opções '--color' e '--format specdoc' ativadas

156

Como faço para definir a configuração global do RSpec no Ubuntu.

Especificamente, o specdoc --color e --format permanece ativado em todos os meus projetos (ou seja, toda vez que executo o rspec em qualquer lugar).

Evoluir
fonte

Respostas:

238

Como você pode ver nos documentos aqui , o uso pretendido está criando ~/.rspece nele colocando suas opções, como --color.

Para criar rapidamente um ~/.rspecarquivo com a --coloropção, basta executar:

echo '--color' >> ~/.rspec 
abyx
fonte
17
--ttytambém é necessário se você quiser cores, mesmo quando usar pagers.
Adam Spiers
2
Quais são os prós / contras de usar .rspecou spec_helper.rb? @shamaoke @christoph
Ian Vaughan
2
Uma grande vantagem da ~/.rspecsolução é a portabilidade. Por exemplo, nosso servidor de IC não lida muito bem com as cores. Com o arquivo de configuração dir do usuário, podemos adotar facilmente para diferentes ambientes.
Christoph Petschnig 23/05
2
Uma outra observação relevante é que você pode criar o arquivo .rspec no nível do projeto e aplicá-lo apenas a esse projeto. Apenas pensei que alguns podem querer saber isso aqui também.
precisa
Mover minhas opções de configuração de spec_helper.rb para .rspec resolveu esse problema para mim.
Edward Anderson
149

Pode-se também usar um spec_helper.rbarquivo em todos os projetos. O arquivo deve incluir o seguinte:

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

Qualquer arquivo de exemplo deve exigir que o auxiliar possa usar essas opções.

Shamaoke
fonte
1
A pergunta original pede uma configuração global; essa é específica do projeto. Útil, mas não a resposta correta, ao contrário da abyx's, que aponta para o .rspecarquivo.
Olivier Lacan
8
A busca de informações sobre a configuração e formatadores RSpec traz um a esta página, então eu apreciado esta resposta, mesmo que fosse para a pergunta errada :-)
phatmann
3
color_enabledagora écolor
elado
12

No seu spec_helper.rbarquivo, inclua a seguinte opção:

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

Você deve exigir em cada *_spec.rbarquivo que deve usar essa opção.

Christoph Petschnig
fonte
Olá, obrigado - você poderá elaborar o seguinte: "Você deve solicitar em cada arquivo * _spec.rb que deve usar essa opção." eu não entendo
BKSpurgeon
Cada um dos seus arquivos * _spec.rb geralmente começa com "spec_helper", você não deve esquecer isso.
Christoph Petschnig
6

Se você usar rake para executar testes rspec, poderá editar spec / spec.opts

http://rspec.info/rails/runners.html

fernyb
fonte
9
./spec.opts foi privado. Rails 3 quer que o arquivo a ser chamado ./.rspec ou ~ / .rspec
Aaron Wheeler
2

Ou simplesmente adicione alias spec=spec --color --format specdocao seu arquivo ~ / .bashrc como eu.

zzeroo
fonte
5
Esta solução não é muito portátil. A resposta correta é @abyx com o uso .rspec, como quando o check-in é feito no projeto, qualquer pessoa que o obtenha obterá as mesmas configurações.
Ian Vaughan
1
Mas a pergunta era sobre "a configuração global do RSpec no Ubuntu", "em todos os meus projetos", não no modo portátil nem no modo cooperativo.
Zzeroo
3
Humm, acho que você está certo, sua resposta está diretamente relacionada ao OP. Eu estava pensando em um cenário mais amplo, mas ainda acho que a melhor resposta foi @abyx, se o OP se acostumar a configurar projetos corretamente, outros serão beneficiados, talvez não agora, pois ele pode estar trabalhando sozinho, mas as boas práticas são exatamente isso. Desculpe, um pouco confiante, apenas a minha maneira de pensar.
Ian Vaughan
1
@zzeroo @Ian: Observe que colocar o .rspecarquivo no diretório inicial do usuário (como eu mencionei na minha resposta) funciona globalmente para todas as chamadas de rspec do usuário. Isso é na verdade mais sólida do que usando pseudônimos, como algumas jóias / outros aliases / ferramentas o usuário pode usar não necessariamente usar o alias
abyx
1
Agora, voltando a esta pergunta e sendo um pouco mais velho e mais sábio, eu concordaria que definir o arquivo de ponto .rspec agora é uma opção melhor. Atualizando minha resposta aprovada para abyx, muito obrigado zzero por responder minha pergunta melhor em 2010. :)
Evolve
1

Uma coisa a ter em atenção é o impacto das diferentes maneiras de executar o RSpec.

Eu estava tentando ativar a opção com o seguinte código em spec / spec_helper.rb -

Rspec.configure do |config|
  config.tty = $stdout.tty?
end
  1. chamando o binário 'rspec' diretamente - ou como 'bundle exec rspec' e verificando $ stdout.tty? retornará verdadeiro.
  2. invocando a tarefa 'rake spec' - ou como 'bundle exec rake spec' - o Rake invocará o rspec em um processo separado e $ stdout.tty? retornará falso.

No final, usei a opção ~ / .rspec, com apenas --tty como seu conteúdo. Funciona bem para mim e mantém a saída do servidor de CI limpa.

Leif
fonte