So führen Sie das Schema aus: Laden Sie die erste capistrano 3-Anwendung meiner Rails-App

8

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!

    
Adam Albrecht 16.12.2013, 21:36
quelle

2 Antworten

2

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:

%Vor%

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:

%Vor%     
Xavier 02.08.2014 23:42
quelle
2

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'.

    
odigity 17.01.2015 16:03
quelle