sql >> Base de Datos >  >> NoSQL >> MongoDB

Tiempo de carga de RSpec increíblemente largo en OS X

Empaquetador

Parece un problema de carga del paquete para mí. Recomendaría hacer algunas medidas más. ¿Usas 1 conjunto de gemas por proyecto o almacenas todo en 1 conjunto de gemas (es cierto si no usas ninguno)? Si tiene muchas gemas en 1 directorio (es decir, 1 conjunto de gemas para todas), eventualmente ralentizará mucho el empaquetador, ya que necesita atravesar más rutas para hacer su trabajo.

bundle | wc -l # how many gems bundler uses in your current project
gem list -q | wc -l # how many gems in your gemset 

Si gem list -q | wc -l reporta un valor bastante grande (tengo 237 y todo parece normal para mí), tal vez necesite dividir las gemas instaladas en un conjunto de gemas separado por proyecto.

Haz algunas medidas más con time comando, busca el real valor, es la suma total.

Primero, elimine su bundled_rspec contenedor, no es necesario con último RVM versiones.

Luego mida su carga de rspec con y sin Bundler:

time rspec -v # with implicit bundler loading, rubygems-bundler gem is in use
time NOEXEC_DISABLE=1 rspec -v # without bundler, disable rubygems-bundler gem for this call`

Si time rspec -v le da números grandes incluso para proyectos con Gemfile relativamente pequeño, es un problema del paquete.

Raíles

El siguiente cuello de botella suele ser el propio Rails. Intente medir una prueba que no cargue Rails (es decir, solo spec_helper ) y luego probar con rieles (es decir, con rails_helper ).

Tan pronto como comience a ver una gran diferencia en los números, sabrá dónde tiene un problema.

Primavera

Como solución rápida para mejorar el rendimiento de los rieles, se usa spring joya . Si usa Rails 4.1+, Spring ya está habilitado.

Para habilitar Spring para rspec agregar a su Gemfile

gem 'spring-commands-rspec', group: :development

y ejecuta

$ bundle install
$ spring binstub --all

El último comando generará envoltorios para todos los archivos binarios admitidos por Spring en el bin de su proyecto carpeta (eche un vistazo allí y no olvide enviarlos). Después de eso, debe ejecutar rspec con bin/rspec . La primera ejecución seguirá siendo lenta, pero todas las ejecuciones posteriores deberían ser lo suficientemente rápidas, ya que Rails ya estará cargado.