Ich möchte db:schema:load
anstelle von db:migrate
bei der anfänglichen Bereitstellung meiner Rails-App ausführen.
Das war früher ziemlich trivial, wie man in dieser Stack-Overflow-Frage aber in Capistrano 3 haben sie die deploy:cold
Aufgabe aufgegeben. Die erstmalige Bereitstellung unterscheidet sich nicht von allen nachfolgenden Bereitstellungen.
Irgendwelche Vorschläge? Danke!
Sie müssen deploy:cold
im Grunde als Duplikat der normalen Bereitstellungsaufgabe definieren, aber mit deploy:db_load_schema
anstelle von deploy:migrations
. Zum Beispiel:
Es ist möglicherweise sogar besser, den deploy:db_schema_load
-Task unabhängig auszuführen, da sich die im standardmäßigen deploy
enthaltenen Tasks im Laufe der Zeit ändern können.
Ich verwende tatsächlich db:setup
für neue Bereitstellungen, weil die Datenbank nach dem Erstellen von Tabellen erstellt wird:
Ich bin auch neu in Capistrano und versuche, es zum ersten Mal zu verwenden, um eine Rails-App auf Produktionsservern zu implementieren, die ich mit Puppet konfiguriert habe.
Ich musste endlich in die Capistrano-Quelle (und capistrano / bundler, und capistrano / rails, und sogar sshkit und net-ssh, um Auth-Probleme zu debuggen) graben, um genau zu bestimmen, wie alles funktioniert, bevor ich mich sicher fühlte, was sich ändert Ich wollte machen. Ich habe gerade diese Änderungen vorgenommen und bin mit den Ergebnissen zufrieden:
%Vor%Die deploy: cold-Aufgabe hakt lediglich meine benutzerdefinierte Bereitstellung: inidb-Aufgabe, die vor der Bereitstellung ausgeführt werden soll: migrieren. Auf diese Weise werden das Schema und die Startwerte geladen, und der folgende Schritt deploy: migrate führt nichts (sicher) aus, da keine neuen Migrationen ausgeführt werden müssen. Aus Sicherheitsgründen prüfe ich, ob die Tabelle schema_migrations vor dem Laden des Schemas bereits vorhanden ist, falls Sie deploy: cold erneut ausführen.
Hinweis: Ich entscheide mich, die Datenbank mit Puppet zu erstellen, damit ich meinem postgresql-Benutzer nicht die Berechtigung CREATEDB gewähren kann, aber wenn Capistrano es tun soll, fügen Sie einfach "execute: rake, 'db: create' hinzu. "vor der db: schema: laden, oder ersetzen Sie alle drei Zeilen mit 'db: setup'.
Tags und Links ruby-on-rails capistrano capistrano3