Estamos desarrollando una aplicación en Ruby 1.9.3 y Rails 3.2.1.¿Por qué mi "tiempo de inicio" de `rake test: units` en Rails 3.2.1 es tan lento?
Recientemente, nuestras pruebas de unidad se han vuelto lentas al principio. La ejecución de las invocaciones & tarda unos 15 segundos en llevarse a cabo. Una vez que veo "Ejecutar prueba: unidades", transcurren otros 10 segundos antes de ver alguna salida. Finalmente, la tarea se completa y las pruebas solo tardan 3 segundos en ejecutarse.
3 segundos para pruebas unitarias es aceptable. El tiempo de carga de 25 segundos no es realista para BDD/TDD.
Esto es lo que sucede cuando corro con rake test:units --trace
:
** Invoke test:units (first_time)
** Invoke test:prepare (first_time)
** Invoke db:test:prepare (first_time)
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:abort_if_pending_migrations
** Execute db:test:prepare
** Invoke db:test:load (first_time)
** Invoke db:test:purge (first_time)
** Invoke environment
** Execute db:test:purge
** Execute db:test:load
** Invoke db:test:load_schema (first_time)
** Invoke db:test:purge
** Execute db:test:load_schema
** Invoke db:schema:load (first_time)
** Invoke environment
** Execute db:schema:load
** Execute test:prepare
** Execute test:units
No me cabe duda de que el esquema de la base que se está cargando, a continuación, volver a cargar, podría ser una fuente clave de la lentitud. Sin embargo, no he hecho nada con nuestro Rakefile
relacionado con las pruebas unitarias. ¿Dónde puedo echar un vistazo para ver qué está pasando realmente bajo el capó?
Esto es lo que está en la parte superior de test/test_helper.rb
:
require 'simplecov'
ENV["RAILS_ENV"] = "test"
require File.expand_path('../../config/environment', __FILE__)
require 'rails/test_help'
Lo que he intentado:
- Comentando
simplecov
, ya que sólo utilizamos que para nuestro servidor CI, no durante el desarrollo (no hizo ninguna diferencia en el tiempo de ejecución) - Comentando las otras cosas, pero eso rompió las pruebas incluso de la ejecución. No estoy del todo seguro de por qué esos otros elementos están allí, ya que pensé que el entorno Rails se cargaría en "prueba" automáticamente.
¿Alguna idea sobre dónde y cómo puedo asomar la cabeza para ver?
¿Hay alguna posibilidad de que Rails esté ejecutando migraciones en lugar de solo schema:load
? A medida que desarrollamos, tenemos una gran cantidad de migraciones (~ 30).
EDIT:
estoy usando un modelo 2011-Macbook Pro con 8G RAM y Core i7 - no creo que es mi máquina. He visto in this question que en Windows, require
puede causar problemas.
También he considerado que los accesorios pueden ser el problema, pero si los accesorios fueran el problema, las pruebas mismas, no el tiempo de carga de las pruebas, serían lentas, ¿verdad?
EDIT 2:
Gracias a la respuesta de pchap10k creo que no tiene nada que ver con el rastrillo - se trata de nuestra Gemfile
. Tal vez debería buscar en esa área ...
Eso parece ser. Gemfile tardaba 15 segundos en cargar el entorno Rails. – makdad