2010-05-07 10 views
15

Soy bastante nuevo en todo el mundo JRuby. Estoy usando RSpec en un conjunto de pruebas bastante grande. Me gustaría poder ejecutar las especificaciones con frecuencia, pero la JVM tarda tanto en iniciarse que se está convirtiendo en un drenaje en tiempo real.RSpec más rápido con JRuby

¿Hay alguna manera de mantener la JVM en ejecución? o una forma de obtener especificaciones para correr más rápido con JRuby?

Respuesta

20

Hay dos cosas que usted podría mirar en:

  1. ejecutar un servidor y enviar nailgun especificación corre a la misma. jruby --ng-server & y luego jruby --ng -S spec o jruby --ng -S rake

  2. Usar spork. http://www.ruby-forum.com/topic/190163 Escuché que Roger Pack tiene una versión que puede funcionar con JRuby. http://github.com/rdp/spork

+0

Si uso un servidor de uñas para mis especificaciones, toma ~ 23 segundos y solo ejecutarlas con la especificación de rastrillo toma ~ 8 segundos. Debo estar haciendo algo mal. Tampoco fui capaz de hacer funcionar a spork. Dio un error acerca de que Fork no es compatible con mi plataforma. Aunque no he probado la versión de Roger Pack. – jacklin

+1

Prueba las mismas tareas varias veces. Mi tiempo de carga inicial fue de 30 s solo para ejecutar 'jruby --ng -S geme list', pero se acercó a <1 s después de 10 carreras. El compilador JIT junto con los almacenamientos intermedios/cachés del sistema operativo debería comenzar a acelerar las cosas (especialmente aquellos sin SSD). También asegúrese de usar la JVM --server junto con las otras banderas estándar de GC. Mire el uso de la memoria, la CPU y la E/S para determinar el cuello de botella (si corresponde). HTH. – Barry

+0

De acuerdo, spork y nailgun juntos en mi proyecto trajeron mi tiempo de prueba única de 30 a 5 segundos. Tengo un útil script de ayuda para ejecutar rspec con spork y nailgun, solo cuando están en ejecución, en caso de que estés interesado: http://ylan.segal-family.com/blog/2012/10/02/faster-rspec- jruby/ –