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%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:
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.
In Capistrano 3 ist das Verknüpfen von Dateien integriert. Johns Antwort ist einfach:
shared/
create config/database.yml
In config/deploy.rb
verwenden Sie diese Zeile
Das macht, was John sagte.
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
Tags und Links ruby database ruby-on-rails-3.1 deployment capistrano