Ich verwende eine Rails-App mit drei Webservern und einem Datenbankserver (einem AWS RDS-Server). Ich arbeite mit Chef Solo. Momentan setze ich "migrate true" in meinem rails_app-Rezept und "rake db: migrate" wird einmal auf jedem Webserver ausgeführt.Mit Chef, wie führe ich eine Rails-Migration nur einmal aus?
Dies ist normalerweise kein Problem, wenn die Migrationen kurz sind. (Der erste ist erfolgreich, und der zweite und der dritte werden übersprungen, da die Tabelle schema_migrations die neueste Schemaversion auflistet.) Wenn die Migration jedoch lange dauert, versuchen der zweite und der dritte Webserver eine Migration durchzuführen, bevor die erste beendet wird . Sie scheitern und Koch geht erfolglos. Beachten Sie, dass die Migration erfolgreich war (zumindest wenn ich sie ausprobiert habe), aber die allgemeine Bereitstellung der neuen Version schlägt fehl. (Wenn ich es erneut ausführen, ist alles erfolgreich, da die Migration bereits ausgeführt wurde.)
Meine Frage ist, was ist der beste/kanonische Weg, um sicherzustellen, dass die Migration nur einmal ausgeführt wird?
Sie könnten diesen Podcast hören: http://foodfightshow.org/2013/01/application-deployment.html – StephenKing