6
votes

Comment gérer les tâches de déploiement uniques avec Capistrano?

J'essaie actuellement d'automatiser le processus de déploiement de notre application Rails autant que possible, de sorte qu'une version propre sur le serveur CI puisse déclencher un déploiement automatisé sur un serveur de test.

Mais j'ai rencontré un peu un accroc avec le scénario suivant: J'ai ajouté le gemme sympa_id à l'application. Il y a une migration qui crée toutes les tables nécessaires. Mais pour remplir ces tables, je dois appeler une tâche de râteau.

Maintenant, ces tâches de râteau doivent être appelées une seule fois, alors l'ajouter au script de déploiement serait surchargée.

Idéalement, je cherche quelque chose comme des migrations, mais au lieu de la base de données, il devrait suivre une trace des scripts qui doivent être appelés lors d'un déploiement. Une telle bête existe-t-elle déjà?


0 commentaires

3 Réponses :


1
votes

Je ne peux penser à rien qui fait exactement ce que vous voulez, mais si vous avez juste besoin de pouvoir exécuter des tâches sur des serveurs distants de la mode d'une manière unique, vous pouvez toujours utiliser Capistrano.

Il y a une question de questions pour cela ici: Comment puis-je Courez une tâche de rake de Capistrano? , qui lie également cet article http://ananelelson.com/said/on/2007/12/30/Remote-rake-tasks-with-capistrano/ .

Edit: Je me demande s'il est possible de créer une migration qui ne modifie aucune base de données, mais invoque simplement une tâche de râteau? Rake :: Tâche ["Tâche: nom"]. Invoquer . Vaut la peine d'essayer?


3 commentaires

Bien sûr, j'utilise des migrations pour mettre à jour les données en masse. Aucune raison pour laquelle vous devez changer le schéma de la DB.


Eh bien, pourquoi ne pas créer une migration qui appelle une tâche de râteau qui exécute votre changements OFF. Cela devrait fonctionner...


Wow, je n'ai même pas envisagé d'utiliser les migrations pour cela. J'ai toujours assimilé "migration" avec "base de données".



1
votes

Je considérerais que fonctionnant cette tâche de râteau fait partie de la migration à l'aide de sympa_id. Bien sûr, vous avez créé les tables, mais vous n'êtes pas encore fait! Vous devez toujours faire des mises à jour de données avant d'avoir vraiment migré.

Appelez la tâche Rake de votre migration. Il mettra à jour les données existantes et les nouveaux enregistrements seront traités par votre logique de l'application dans le futur.


0 commentaires

3
votes

ressemble à After_Party GEM GEM fait exactement ce que vous voulez.


0 commentaires