Jak globalnie skonfigurować RSpec, aby opcje „--color” i „--format specdoc” były włączone

156

Jak ustawić globalną konfigurację dla RSpec w Ubuntu.

W szczególności --color i --format specdoc pozostają włączone we wszystkich moich projektach (tj. Za każdym razem, gdy uruchamiam rspec w dowolnym miejscu).

Ewoluować
źródło

Odpowiedzi:

238

Jak widać w dokumentach tutaj , zamierzonym zastosowaniem jest tworzenie ~/.rspeci umieszczanie w nim opcji, takich jak--color .

Aby szybko utworzyć ~/.rspecplik z --coloropcją, po prostu uruchom:

echo '--color' >> ~/.rspec 
otchłań
źródło
17
--ttyjest również wymagany, jeśli chcesz kolorować nawet przy użyciu pagerów.
Adam Spiers
2
Jakie są zalety / wady używania .rspeclub spec_helper.rb? @shamaoke @christoph
Ian Vaughan
2
Dużą zaletą tego ~/.rspecrozwiązania jest przenośność. Np. Nasz serwer CI nie radzi sobie zbyt dobrze z wydrukami w kolorze. Dzięki plikowi konfiguracyjnemu dir użytkownika możemy łatwo dostosować się do różnych środowisk.
Christoph Petschnig
2
Inną ważną uwagą jest to, że możesz utworzyć plik .rspec na poziomie projektu i zastosować go tylko do tego projektu. Pomyślałem, że niektórzy chcieliby to wiedzieć również tutaj.
Nick Gronow
Przeniesienie moich opcji konfiguracyjnych z spec_helper.rb do .rspec rozwiązało ten problem.
Edward Anderson
149

spec_helper.rbPlik można również wykorzystać we wszystkich projektach. Plik powinien zawierać:

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

Każdy przykładowy plik musi wymagać, aby pomocnik mógł używać tych opcji.

Shamaoke
źródło
1
Oryginalne pytanie dotyczy globalnej konfiguracji, to jest specyficzna dla projektu. Przydatna, ale nie poprawna odpowiedź, w przeciwieństwie do Abyxa, który wskazuje na .rspecplik.
Olivier Lacan
8
Poszukiwanie informacji o konfiguracji RSpec i elementach formatujących prowadzi do tej strony, więc doceniam tę odpowiedź, nawet jeśli dotyczyła niewłaściwego pytania :-)
phatmann
3
color_enabledjest terazcolor
elado
12

W swoim spec_helper.rbpliku umieść następującą opcję:

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

Następnie musisz wymagać w każdym *_spec.rbpliku, który powinien używać tej opcji.

Christoph Petschnig
źródło
Cześć, dziękuję - czy byłbyś w stanie rozwinąć następujące kwestie: „Następnie musisz wymagać w każdym pliku * _spec.rb, aby używał tej opcji”. Nie rozumiem.
BKSpurgeon
Każdy z twoich plików * _spec.rb zwykle zaczyna się od require "spec_helper", nie należy o tym zapominać.
Christoph Petschnig
6

Jeśli używasz rake do uruchamiania testów rspec, możesz edytować spec / spec.opts

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

fernyb
źródło
9
./spec.opts został pozbawiony praw. Rails 3 chce, aby plik miał nazwę ./.rspec lub ~ / .rspec
Aaron Wheeler,
2

Lub po prostu dodaj alias spec=spec --color --format specdocdo swojego pliku ~ / .bashrc tak jak ja.

zzeroo
źródło
5
To rozwiązanie nie jest zbyt przenośne. Prawidłowa odpowiedź to @abyx z użyciem .rspec, ponieważ gdy jest on zarejestrowany w projekcie, każdy inny otrzymujący go otrzyma te same ustawienia.
Ian Vaughan
1
Ale pytanie dotyczyło „globalnej konfiguracji RSpec w Ubuntu”, „we wszystkich moich projektach”, a nie trybu przenośnego ani kooperacyjnego.
zzeroo
3
Humm, myślę, że masz rację, twoja odpowiedź odnosi się bezpośrednio do PO. Myślałem o szerszej perspektywie, ale nadal uważam, że lepszą odpowiedzią było @abyx, jeśli OP przyzwyczai się do poprawnej konfiguracji projektów, to inni skorzystają, może nie teraz, ponieważ może pracować solo, ale dobre praktyki są po prostu tym. Przepraszam, trochę ranny, tylko mój sposób myślenia.
Ian Vaughan
1
@zzeroo @Ian: Zwróć uwagę, że umieszczenie .rspecpliku w katalogu domowym użytkownika (jak wspomniałem w mojej odpowiedzi) działa globalnie dla wszystkich wywołań rspec przez użytkownika. To jest w rzeczywistości bardziej solidne niż przy użyciu aliasów, jak kilka innych perełek / aliasów / narzędzi użytkownik może używać niekoniecznie użyć aliasu
abyx
1
Wracając do tego pytania i będąc trochę starszym i mądrzejszym, zgodziłbym się, że ustawienie pliku .rspec z kropką jest teraz lepszą opcją. Aktualizuję moją zatwierdzoną odpowiedź dla abyx, bardzo dziękuję zzero za najlepszą odpowiedź na moje pytanie w 2010 roku. :)
Evolve
1

Jedną rzeczą, o której należy pamiętać, jest wpływ różnych sposobów uruchamiania RSpec.

Próbowałem włączyć opcję z następującym kodem w spec / spec_helper.rb -

Rspec.configure do |config|
  config.tty = $stdout.tty?
end
  1. wywołanie pliku binarnego „rspec” bezpośrednio - lub jako „bundle exec rspec” i sprawdzenie $ stdout.tty? zwróci prawdę.
  2. wywołanie zadania „rake spec” - lub jako „bundle exec rake spec” - Rake wywoła rspec w oddzielnym procesie, a $ stdout.tty? zwróci wartość false.

W końcu użyłem opcji ~ / .rspec, której zawartością była tylko opcja --tty. Działa dobrze dla mnie i utrzymuje czysty wynik naszego serwera CI.

Leif
źródło