Wie konfiguriere ich RSpec global so, dass die Optionen '--color' und '--format specdoc' aktiviert bleiben?

156

Wie stelle ich die globale Konfiguration für RSpec in Ubuntu ein?

Insbesondere bleiben --color und --format specdoc in allen meinen Projekten aktiviert (dh jedes Mal, wenn ich rspec irgendwo ausführe).

Entwickeln
quelle

Antworten:

238

Wie Sie in den Dokumenten hier sehen können , besteht die beabsichtigte Verwendung ~/.rspecdarin, Ihre Optionen zu erstellen und darin zu platzieren, z --color.

Um schnell eine ~/.rspecDatei mit der --colorOption zu erstellen , führen Sie einfach Folgendes aus:

echo '--color' >> ~/.rspec 
Abyx
quelle
17
--ttyist auch erforderlich, wenn Sie auch bei Verwendung von Pagern Farbe wünschen.
Adam Spires
2
Was sind die Vor- / Nachteile bei der Verwendung von .rspecoder spec_helper.rb? @shamaoke @christoph
Ian Vaughan
2
Ein großer Vorteil der ~/.rspecLösung ist die Portabilität. Beispielsweise verarbeitet unser CI-Server die Farbausgabe nicht sehr gut. Mit der Benutzerverzeichnis-Konfigurationsdatei können wir problemlos verschiedene Umgebungen übernehmen.
Christoph Petschnig
2
Ein weiterer relevanter Hinweis ist, dass Sie die .rspec-Datei auf Projektebene erstellen und auf nur dieses Projekt anwenden können. Ich dachte nur, einige möchten das vielleicht auch hier wissen.
Nick Gronow
Durch das Verschieben meiner Konfigurationsoptionen von spec_helper.rb nach .rspec wurde dieses Problem für mich behoben.
Edward Anderson
149

Man kann auch eine spec_helper.rbDatei in allen Projekten verwenden. Die Datei sollte Folgendes enthalten:

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

Für jede Beispieldatei muss der Helfer diese Optionen verwenden können.

Shamaoke
quelle
1
Die ursprüngliche Frage fragt nach einer globalen Konfiguration, dies ist eine projektspezifische. Nützlich, aber nicht die richtige Antwort, im Gegensatz zu Abyx, das auf die .rspecDatei verweist .
Olivier Lacan
8
Eine Suche nach Informationen über die RSpec-Konfiguration und Formatierer bringt eine auf diese Seite, daher habe ich diese Antwort sehr geschätzt, auch wenn es sich um die falsche Frage handelte :-)
Phatmann
3
color_enabledist jetztcolor
elado
12

Fügen Sie Ihrer spec_helper.rbDatei die folgende Option hinzu:

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

Sie müssen dann in jeder *_spec.rbDatei angeben, dass diese Option verwendet werden soll.

Christoph Petschnig
quelle
Hallo, danke - könnten Sie Folgendes näher erläutern: "Sie müssen dann in jeder * _spec.rb-Datei angeben, dass diese Option verwendet werden soll." Ich verstehe nicht.
BKSpurgeon
Jede Ihrer * _spec.rb-Dateien beginnt normalerweise mit "spec_helper". Sie sollten dies nicht vergessen.
Christoph Petschnig
6

Wenn Sie mit rake rspec-Tests ausführen, können Sie spec / spec.opts bearbeiten

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

fernyb
quelle
9
./spec.opts wurde beraubt. Rails 3 möchte, dass die Datei ./.rspec oder ~ / .rspec
Aaron Wheeler
2

Oder fügen alias spec=spec --color --format specdocSie einfach wie ich zu Ihrer ~ / .bashrc-Datei hinzu.

zzeroo
quelle
5
Diese Lösung ist nicht sehr portabel. Die richtige Antwort lautet @abyx bei Verwendung von .rspec, da beim Einchecken in das Projekt alle anderen, die es erhalten, die gleichen Einstellungen erhalten.
Ian Vaughan
1
Die Frage lautete jedoch "Globale Konfiguration für RSpec in Ubuntu", "über alle meine Projekte hinweg", weder tragbar noch im Koop-Modus.
Zzeroo
3
Humm, ich denke du hast Recht, deine Antwort bezieht sich direkt auf das OP. Ich dachte über ein größeres Bild nach, aber ich denke immer noch, dass die bessere Antwort @abyx war. Wenn sich das OP daran gewöhnt, Projekte richtig zu konfigurieren, werden andere davon profitieren, vielleicht nicht jetzt, da er vielleicht alleine arbeitet, aber gute Praktiken sind genau das. Entschuldigung, ein bisschen Ranty, nur meine Denkweise.
Ian Vaughan
1
@zzeroo @Ian: Beachten Sie, dass das Ablegen der .rspecDatei im Home-Verzeichnis des Benutzers (wie in meiner Antwort erwähnt) global für alle Aufrufe von rspec durch den Benutzer funktioniert. Das ist in der Tat solider als die Verwendung von Aliasen, da einige Edelsteine ​​/ andere Aliase / Werkzeuge, die der Benutzer möglicherweise verwendet, nicht unbedingt den Alias ​​verwenden würden
Abyx
1
Wenn ich nun auf diese Frage zurückkomme und etwas älter und weiser bin, würde ich zustimmen, dass das Festlegen der .rspec-Punktdatei jetzt eine bessere Option ist. Aktualisierung meiner genehmigten Antwort auf Abyx, vielen Dank zzero für die Beantwortung meiner Frage am besten im Jahr 2010. :)
Evolve
1

Eine Sache, die Sie beachten sollten, ist die Auswirkung der verschiedenen Arten, RSpec auszuführen.

Ich habe versucht, die Option mit dem folgenden Code in spec / spec_helper.rb zu aktivieren -

Rspec.configure do |config|
  config.tty = $stdout.tty?
end
  1. die 'rspec'-Binärdatei direkt aufrufen - oder als' bundle exec rspec 'und $ stdout.tty prüfen? wird true zurückgeben.
  2. Aufrufen der Task 'Rake Spec' - oder als 'Bundle Exec Rake Spec' - Rake ruft rspec in einem separaten Prozess auf und $ stdout.tty? wird false zurückgeben.

Am Ende habe ich die Option ~ / .rspec verwendet, mit nur --tty als Inhalt. Funktioniert gut für mich und hält die Ausgabe unseres CI-Servers sauber.

Leif
quelle