¿Cómo configuro globalmente RSpec para mantener activadas las opciones '--color' y '--format specdoc'?

156

¿Cómo configuro la configuración global para RSpec en Ubuntu?

Específicamente, --color y --format specdoc permanecen activados en todos mis proyectos (es decir, cada vez que ejecuto rspec en cualquier lugar).

Evolucionar
fuente

Respuestas:

238

Como puede ver en los documentos aquí , el uso previsto es crear ~/.rspecy poner sus opciones, como --color.

Para crear rápidamente un ~/.rspecarchivo con la --coloropción, simplemente ejecute:

echo '--color' >> ~/.rspec 
abyx
fuente
17
--ttyTambién es necesario si desea color, incluso cuando utiliza buscapersonas.
Adam Spires
2
¿Cuáles son las ventajas y desventajas de usar .rspeco spec_helper.rb? @shamaoke @christoph
Ian Vaughan
2
Una gran ventaja de la ~/.rspecsolución es la portabilidad. Por ejemplo, nuestro servidor CI no maneja muy bien la salida de color. Con el archivo de configuración de directorio de usuario, podemos adoptar fácilmente a diferentes entornos.
Christoph Petschnig
2
Otra nota relevante es que puede crear el archivo .rspec a nivel de proyecto y hacer que se aplique solo a ese proyecto. Solo pensé que algunos querrían saber eso aquí también.
Nick Gronow
Mover mis opciones de configuración de spec_helper.rb a .rspec resolvió este problema por mí.
Edward Anderson el
149

También se puede usar un spec_helper.rbarchivo en todos los proyectos. El archivo debe incluir lo siguiente:

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

Cualquier archivo de ejemplo debe requerir que el ayudante pueda usar esas opciones.

Shamaoke
fuente
1
La pregunta original pide una configuración global, esta es específica del proyecto. Útil, pero no es la respuesta correcta, a diferencia de abyx que apunta al .rspecarchivo.
Olivier Lacan
8
Una búsqueda de información sobre la configuración y los formateadores de RSpec trae uno a esta página, así que agradezco esta respuesta, incluso si fuera por la pregunta incorrecta :-)
phatmann
3
color_enabledes ahoracolor
elado
12

En su spec_helper.rbarchivo, incluya la siguiente opción:

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

Luego debe *_spec.rbsolicitar en cada archivo que use esa opción.

Christoph Petschnig
fuente
Hola, gracias. ¿Podrías dar más detalles sobre lo siguiente: "Entonces debes solicitar en cada archivo * _spec.rb que debería usar esa opción". No entiendo.
BKSpurgeon
Cada uno de sus archivos * _spec.rb generalmente comienza con require "spec_helper", no debe olvidar esto.
Christoph Petschnig
6

Si usa rake para ejecutar pruebas rspec, puede editar spec / spec.opts

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

fernyb
fuente
9
./spec.opts ha sido depricated. Rails 3 quiere que el archivo se llame ./.rspec o ~ / .rspec
Aaron Wheeler
2

O simplemente agregue alias spec=spec --color --format specdoca su archivo ~ / .bashrc como yo.

zzeroo
fuente
55
Esta solución no es muy portátil. La respuesta correcta es @abyx con el uso .rspec, ya que cuando se registra con el proyecto, cualquier otra persona que lo obtenga tendrá la misma configuración.
Ian Vaughan
1
Pero la pregunta era sobre "configuración global para RSpec en Ubuntu", "en todos mis proyectos", no en modo portátil ni cooperativo.
zzeroo
3
Humm, supongo que tienes razón, tu respuesta se relaciona directamente con el OP. Estaba pensando en una imagen más grande, pero aún creo que la mejor respuesta fue @abyx, si el OP se acostumbra a configurar proyectos correctamente, entonces otros se beneficiarán, tal vez no ahora, ya que podría estar trabajando solo, pero las buenas prácticas son solo eso. Lo siento, un poco desaliñado, solo mi forma de pensar.
Ian Vaughan
1
@zzeroo @Ian: Tenga en cuenta que poner el .rspecarchivo en el directorio de inicio del usuario (como mencioné en mi respuesta) funciona globalmente para todas las invocaciones de rspec del usuario. De hecho, eso es más sólido que usar alias, ya que algunas gemas / otros alias / herramientas que el usuario podría usar no necesariamente usarían el alias
abyx
1
Ahora, volviendo a esta pregunta y siendo un poco más viejo y más sabio, estaría de acuerdo en que configurar el archivo de puntos .rspec ahora es una mejor opción. Actualizando mi respuesta aprobada a abyx, muchas gracias zzero por responder mejor a mi pregunta en 2010. :)
Evoluciona el
1

Una cosa a tener en cuenta es el impacto de las diferentes formas de ejecutar RSpec.

Estaba tratando de activar la opción con el siguiente código en spec / spec_helper.rb:

Rspec.configure do |config|
  config.tty = $stdout.tty?
end
  1. llamando directamente al binario 'rspec' o como 'bundle exec rspec' y comprobando $ stdout.tty? volverá verdadero.
  2. invocando la tarea 'rake spec' - o como 'bundle exec rake spec' - Rake invocará rspec en un proceso separado, y $ stdout.tty? devolverá falso.

Al final utilicé la opción ~ / .rspec, con solo --tty como contenido. Funciona bien para mí y mantiene limpia la salida de nuestro servidor CI.

Leif
fuente