Comment configurer globalement RSpec pour garder les options '--color' et '--format specdoc' activées

156

Comment définir la configuration globale de RSpec dans Ubuntu.

Plus précisément, --color et --format specdoc restent activés, dans tous mes projets (c'est-à-dire à chaque fois que je lance rspec n'importe où).

Évoluer
la source

Réponses:

238

Comme vous pouvez le voir dans les documents ici , l'utilisation prévue consiste à créer ~/.rspecet à y mettre vos options, telles que--color .

Pour créer rapidement un ~/.rspecfichier avec l' --coloroption, exécutez simplement:

echo '--color' >> ~/.rspec 
abyx
la source
17
--ttyest également nécessaire si vous voulez de la couleur même lorsque vous utilisez des téléavertisseurs.
Adam Spiers
2
Quels sont les avantages / inconvénients à utiliser .rspecou spec_helper.rb? @shamaoke @christoph
Ian Vaughan
2
Un gros avantage de la ~/.rspecsolution est la portabilité. Par exemple, notre serveur CI ne gère pas très bien la sortie couleur. Avec le fichier de configuration du répertoire utilisateur, nous pouvons facilement l'adapter à différents environnements.
Christoph Petschnig
2
Une autre remarque pertinente est que vous pouvez créer le fichier .rspec au niveau d'un projet et l'appliquer uniquement à ce projet. Je pensais juste que certains voudraient peut-être le savoir ici aussi.
Nick Gronow
Le déplacement de mes options de configuration de spec_helper.rb vers .rspec a résolu ce problème pour moi.
Edward Anderson
149

On peut également utiliser un spec_helper.rbfichier dans tous les projets. Le fichier doit inclure les éléments suivants:

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

Tout fichier d'exemple doit nécessiter l'assistant pour pouvoir utiliser ces options.

Shamaoke
la source
1
La question d'origine demande une configuration globale, celle-ci est spécifique au projet. Utile, mais pas la bonne réponse, contrairement à abyx qui pointe vers le .rspecfichier.
Olivier Lacan
8
Une recherche d'informations sur la configuration et les formateurs RSpec en amène une sur cette page, alors j'ai apprécié cette réponse, même si c'était pour la mauvaise question :-)
phatmann
3
color_enabledest maintenantcolor
elado le
12

Dans votre spec_helper.rbfichier, incluez l'option suivante:

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

Vous devez alors exiger dans chaque *_spec.rbfichier qui doit utiliser cette option.

Christoph Petschnig
la source
Salut merci - seriez-vous en mesure d'élaborer sur ce qui suit: "Vous devez alors exiger dans chaque fichier * _spec.rb qui devrait utiliser cette option." Je ne comprends pas.
BKSpurgeon
Chacun de vos fichiers * _spec.rb commence généralement par require "spec_helper", vous ne devez pas oublier cela.
Christoph Petschnig
6

Si vous utilisez rake pour exécuter des tests rspec, vous pouvez modifier spec / spec.opts

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

Fernyb
la source
9
./spec.opts est obsolète. Rails 3 veut que le fichier soit nommé ./.rspec ou ~ / .rspec
Aaron Wheeler
2

Ou ajoutez simplement alias spec=spec --color --format specdocà votre fichier ~ / .bashrc comme moi.

zzeroo
la source
5
Cette solution n'est pas très portable. La bonne réponse est @abyx en utilisant .rspec, car lors de son enregistrement avec le projet, toute autre personne qui l'obtient obtiendra les mêmes paramètres.
Ian Vaughan
1
Mais la question portait sur "la configuration globale de RSpec dans Ubuntu", "à travers tous mes projets" pas en mode portable ni coop.
zzeroo
3
Humm, je suppose que vous avez raison, votre réponse concerne directement le PO. Je pensais à une vue d'ensemble, mais je pense toujours que la meilleure réponse était @abyx, si l'OP s'habitue à configurer correctement les projets, d'autres en bénéficieront, peut-être pas maintenant car il pourrait travailler en solo, mais les bonnes pratiques ne sont que cela. Désolé, un peu ranty, juste ma façon de penser.
Ian Vaughan
1
@zzeroo @Ian: Notez que placer le .rspecfichier dans le répertoire personnel de l'utilisateur (comme je l'ai mentionné dans ma réponse) fonctionne globalement pour toutes les invocations de rspec de l'utilisateur. C'est en fait plus solide que d'utiliser des alias, car certains gemmes / autres alias / outils que l'utilisateur pourrait utiliser n'utiliseraient pas nécessairement l'alias
abyx
1
Revenant maintenant à cette question et étant un peu plus âgé et plus sage, je conviens que la configuration du fichier .rspec dot est maintenant une meilleure option. Mise à jour de ma réponse approuvée à abyx, merci beaucoup zzero d'avoir mieux répondu à ma question en 2010. :)
Evolve le
1

Une chose à savoir est l'impact des différentes manières d'exécuter RSpec.

J'essayais d'activer l'option avec le code suivant dans spec / spec_helper.rb -

Rspec.configure do |config|
  config.tty = $stdout.tty?
end
  1. appeler le binaire 'rspec' directement - ou comme 'bundle exec rspec' et vérifier $ stdout.tty? retournera vrai.
  2. en invoquant la tâche 'rake spec' - ou en tant que 'bundle exec rake spec' - Rake invoquera rspec dans un processus séparé, et $ stdout.tty? retournera faux.

À la fin, j'ai utilisé l'option ~ / .rspec, avec juste --tty comme contenu. Fonctionne bien pour moi et maintient la sortie de notre serveur CI propre.

Leif
la source