2010-01-26 16 views
5

Actualmente estoy tratando de automatizar el proceso de implementación de nuestra aplicación de rieles tanto como sea posible, para que una compilación limpia en el servidor de CI pueda desencadenar una implementación automatizada en un servidor de prueba.¿Cómo se manejan las tareas de implementación únicas con capistrano?

Pero me he encontrado con un pequeño inconveniente con la siguiente situación: He agregado la joya friendly_id a la aplicación. Hay una migración que crea todas las tablas necesarias. Pero para llenar estas tablas, necesito llamar a una tarea de rake.

Ahora, estas tareas de rake solo se tienen que llamar una vez, por lo que agregarlas al script de implementación sería excesivo.

Idealmente, estoy buscando algo así como las migraciones, pero en lugar de la base de datos, debe hacer un seguimiento de los scripts que deben invocarse durante una implementación. ¿Existe tal bestia?

Respuesta

1

No se me ocurre nada que haga exactamente lo que quieres, pero si solo necesitas ejecutar tareas en servidores remotos de una sola vez, siempre puedes usar el rastrillo a través de capistrano.

Aquí hay una pregunta ASÍ: How do I run a rake task from Capistrano?, que también enlaza a este artículo http://ananelson.com/said/on/2007/12/30/remote-rake-tasks-with-capistrano/.

Editar: Me pregunto si es posible crear una migración que no haga ningún cambio en la base de datos, sino que solo invoque una tarea de rake. Rake::Task["task:name"].invoke. ¿Vale la pena intentarlo?

+0

Claro, yo uso las migraciones para actualizar los datos en masa. No hay razón para que tengas que cambiar el esquema db. – wesgarrison

+0

Bueno, entonces ¿por qué no crear una migración que llame a una tarea de rake que ejecute su único cambio? Eso debería funcionar ... – jonnii

+0

Guau, ni siquiera consideré simplemente usar las migraciones para esto. Siempre equiparé "migración" con "base de datos". – AGraefe

1

Considero que ejecutar esa tarea de rake es parte de la migración a la utilización de friendly_id. Claro, has creado las tablas, ¡pero aún no has terminado! Todavía tiene que hacer algunas actualizaciones de datos antes de que realmente haya migrado.

Llamar a la tarea de rake desde su migración. Actualizará los datos existentes y la lógica de su aplicación manejará los nuevos registros en el futuro.

Cuestiones relacionadas