Capistrano - kann meine Datenbank.yml nicht bereitstellen

8

Wenn ich versuche, meine App mit capistrano bereitzustellen, erhalte ich folgende Fehlermeldung:

  

fehlgeschlagen: "sh -c 'cp   /var/www/my_app/releases/20120313115055/config/database.staging.yml   /var/www/my_app/releases/20120313115055/config/database.yml 'on   IP_ADDR

Mein database.yml dh leer, database.staging.yml :

%Vor%

in / config / deploy sind Dateien "production" "staging"

Was fehlt mir hier / wo soll ich nach einem Fehler suchen? Die Anmeldeinformationen für die Datenbank auf dem Server sollten stimmen.

BEARBEITEN - hier ist meine Bereitstellung

%Vor%

Das Problem:

%Vor%     
user984621 13.03.2012, 13:13
quelle

3 Antworten

21

Ich bin mir nicht sicher, wie ich dein Problem lösen soll. Es sieht so aus, als ob database.staging.yml nicht bereitgestellt wird, also gibt es nichts zu kopieren.

Ich denke aber, dass es einen besseren Workflow gibt. Dinge wie Einstellungen und Datenbankkonfigurationen ändern sich in der Regel nicht zwischen Bereitstellungen, sodass diese Dinge im freigegebenen Ordner aller capistrano-Versionen gespeichert werden können. Normalerweise möchten Sie nicht, dass sich Ihre Datenbank.yml in Ihrem Repository befindet, da es sich um vertrauliche Informationen handelt. Sie können beide dieser Dinge erfüllen, indem Sie config/database.yml in Ihrem .gitignore ausschließen.

Dies erfordert eine einmalige Einrichtung auf Ihren Servern. Sie müssen ein database.yml at your_app_path/shared/config erstellen. Shared ist ein Geschwister zu aktuellen und Releases.

Ihre deploy.rb sollte eine Aufgabe haben, die die Verknüpfung der neu bereitgestellten Version database.yml mit der im freigegebenen Verzeichnis symbolisiert. So:

%Vor%

Dies bedeutet, dass Ihr Repo keine database.yml Dateien enthält. Da sind sie wahrscheinlich schon in Ihrem Repo. Sie müssen git rm sie, commit. Füge sie zu .gitignore hinzu und übertrage das.

    
JohnColvin 13.03.2012, 15:10
quelle
8

In Capistrano 3 ist das Verknüpfen von Dateien integriert. Johns Antwort ist einfach:

  • Im Ordner shared/ create config/database.yml
  • In config/deploy.rb verwenden Sie diese Zeile

    %Vor%

Das macht, was John sagte.

    
carlosayam 19.01.2015 06:15
quelle
0

Wenn Sie während der Vorkompilierung nicht auf Anwendungsobjekte oder Methoden verweisen müssen ( 1 ) dann ist es vielleicht in Ordnung, config.assets.initialize_on_precompile auf false in config/application.rb

zu setzen     
Jared Beck 11.02.2013 23:12
quelle