Pregunta

Cada vez que ejecuto rspec pruebas para mi aplicación Rails se tarda una eternidad y un día de sobrecarga antes de que realmente empiece la ejecución de pruebas.¿Por qué es rspec tan lento?Es allí una manera de acelerar de Rails carga inicial o solo la parte de mi aplicación Rails me necesitan (por ejemplo,ActiveRecord cosas sólo) por lo que no carga absolutamente todo para correr un par de pruebas?

¿Fue útil?

Solución

Usted debe ser capaz de acelerar la velocidad de su script/spec llamadas mediante la ejecución de script/spec_server aparte en una ventana de terminal, a continuación, agregar el adicional -X parámetro para la especificación de llamadas.

Otros consejos

Definitivamente me sugieren la comprobación hacia fuera spork.

http://spork.rubyforge.org/

El railstutorial específicamente esta, y le da una solución para obtener spork funcionando muy bien en rails 3.0 (a partir de este momento, spork no es rails 3, lista de la caja).Por supuesto, si no estás en rails 3.0, entonces usted debe ser bueno para ir.

La parte del tutorial que muestra cómo obtener spork ejecutando en rails 3.0

http://railstutorial.org/chapters/static-pages#sec:spork

Comprobación cuando spork es rails 3.0 listo

http://www.railsplugins.org/plugins/440-spork

¿Por qué es rspec tan lento? porque se carga todo el entorno, las cargas de accesorios y todo ese jazz.

Es allí una manera de acelerar de Rails carga inicial usted podría tratar de usar burla en lugar de confiar en la base de datos, esto es realmente correcta para la unidad de pruebas y definitivamente la velocidad de su unidad de pruebas.Additionnaly mediante la especificación de servidor como es mencionado por @Scott Matthewman puede ayudar, mismo con el autotest de zentest mencionado por @Marc-Andre Lafortune

Es allí una manera a la parte de mi aplicación Rails me necesitan (por ejemplo,ActiveRecord cosas sólo) por lo que no carga absolutamente todo para correr un par de pruebas? lo que acerca de esto

rake test:recent 

No estoy seguro de cómo rspec tarea de integrar con esto, pero definitivamente puedes usar la prueba:los últimos tarea como una plantilla para hacer lo mismo con rspec pruebas si el.

rake test:rspec:recent

no existe, sin embargo

porque se carga todo el entorno, las cargas de accesorios y todo ese jazz.

El verdadero culpable es si se ejecuta utilizando rake spec, se corre el db:test:prepare tarea.

Esta tarea gotas de toda su base de datos de prueba y re-crea a partir de cero.Esto parece ridículo para mí, pero eso es lo que hace (lo mismo que sucede cuando se ejecuta rake:test:units etc).

Usted puede fácilmente evitar este uso de la spec aplicación con la que rspec se instala como parte de la rspec joya.

Como este:

cd railsapp
spec spec # run all specs without rebuilding the whole damn database
spec spec/models # run model specs only

cd spec
spec controllers/user* # run specs for controllers that start with user

Creo que el "zen" experiencia que usted está buscando es ejecutar spec_server y autospec en el fondo, con el resultado de casi instantánea pruebas cuando se guarda un archivo.

Sin embargo, estoy teniendo problemas para conseguir estos dos programas para comunicarse.

He encontrado una explicación aquí:

Me he dado cuenta de que autotest no enviar comandos a la spec_server.En lugar de esto se vuelve a cargar todo el entorno de Rails y su aplicación plugins cada vez que se ejecuta.Esto hace que autotest para ejecutar significativamente más lento que la secuencia de comandos del servidor, ya que cuando se ejecute el guión/comando especificaciones las especificaciones son enviados a la spec_server que ya tiene su Rieles de medio ambiente puso en marcha y listo para ir.Si suceder a instalar un nuevo plugin o algo por el estilo, entonces usted va a tiene que reiniciar el spec_server.

Pero, ¿cómo podemos solucionar este problema?Supongo que se trataría de descarga ZenTest y cambiar el código para el autotest el programa, pero no tienen tiempo para probarlo ahora mismo.

Se ejecuta esta sobre los Carriles?Si es así, no RSpec de inicialización de que es lento, por lo Rails'.Rails tiene para inicializar todo el código base y el tuyo antes de ejecutar las especificaciones.Bueno, no han a, pero no es así.RSpec corre muy rápido para mí en mi pequeña no rieles de proyectos.

La ejecución de pruebas puede ser muy lento porque todo el entorno de rails ha de carga (prueba de secuencia de comandos de la consola) y sólo entonces todas las pruebas se ejecutan.Usted debe utilizar autotest lo que mantiene el ambiente cargado y se compruebe que los archivos de la edición.Al editar y guardar un archivo, sólo las pruebas que dependen de estos se ejecutará de forma automática y rápida.

Si usted está usando un Mac recomiendo el uso de Rspactor más de autotest, ya que utiliza muchos menos recursos de consulta de los archivos que han cambiado de autotest.Hay un total de Cacao versión

RSpactor.aplicación

o la joya de la versión que me mantenga en el Github

sudo gem install pelle-rspactor

Mientras estos no se agilicen los rspec pruebas, se sienten mucho más rápido ya que se auto ejecute el afectado spec dentro de un segundo de que golpear a guardar.

Como de rspec-rieles-1.2.7, spec_server está en desuso en favor de la spork de la gema.

La razón principal es que requieren de la toma para siempre en windows, por alguna razón.

Consejos para speedup:spork ahora funciona con windows, creo.

Usted puede tratar de "faster_require" que almacena en caché ubicaciones:

http://github.com/rdp/faster_require

GL.-rp

Si usted está en un entorno de Windows, a continuación, probablemente hay poco que se puede hacer como Rieles parece de inicio muy lentamente bajo Windows.Tuve la misma experiencia en Windows y tuve que mover mi programa de instalación para Linux VM para hacer lo que realmente zippy (yo también estaba usando autotest).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top