2011-09-14 10 views
11

Has sido amoroso en los rieles, pero todavía estoy luchando con el tiempo que lleva ejecutar las tareas desde la línea de comandos.Rieles: ¿ejecuta más de una tarea de rake a la vez?

Me pregunto si es posible combinar varias tareas de rake sin tener que volver a cargar el entorno cada vez. Por ejemplo, si me quedo

rails generate rspec:install && rails generate model test_model title:string && rake db:migrate 

que gastará 10 segundos la carga hasta los carriles para ejecutar el rspec instalar, luego otros diez segundos para cargar el entorno para generar el modelo, y luego otro para la migración. ¿Hay alguna manera de mantener el mismo entorno abierto para los 3 comandos?

Respuesta

21

Eche un vistazo a la gema rails-sh - inicia el entorno Rails, y luego presenta una interfaz de línea de comando, para que pueda ejecutar su comando dentro de ella. Existen limitaciones al usarlo (no creo que pueda cambiar sus RAILS_ENV), pero para su caso de uso, debería ser perfecto.

Si sus órdenes se acaba de rastrillo tareas, puede utilizar espacios para separarlos, por ejemplo:

rake db:migrate && rake db:test:clone_structure 

se convertiría en

rake db:migrate db:test:clone_structure 
+0

Wow - Estoy sorprendido que no estaba al tanto de eso . Fantástico, muchas gracias. – PlankTon

+2

Nota: separar las tareas de Rake con espacios parece actuar como el operador de Bash '&&', como lo implica la respuesta, no el operador ';'. La separación de espacios solo ejecuta una tarea si las tareas anteriores finalizaron sin error. 'bundle exec rake test pepino' solo ejecuta la tarea' pepino' si no fallaron las pruebas durante la tarea 'prueba'. –

+0

La separación de espacios no es exactamente equivalente a '&&', tampoco. En una versión de mi código, 'bundle exec rake test pepino' hace que algunas pruebas de Cucumber fallen, pero' bundle exec rake test && bundle exec rake cucumber' deja pasar todas las pruebas. (Puede estar relacionado con cómo 'bundle exec pepino' (sin' rake') en esa versión del código a veces, pero no siempre, también hace que algunas pruebas fallen). –

Cuestiones relacionadas