Keeping statische Dateien in Server, wenn sie mit Capistrano Bereitstellung
-
06-07-2019 - |
Frage
Ich bin das Hochladen von Dateien auf meinem public/files
Ordner einer Rails-Anwendung auf einer konstanten Basis über eine Web-Schnittstelle.
Ich will nicht, diese in der Quellcodeverwaltung halten, da sie für fast 2 GBs gehen, so dass jedes Mal, wenn ich eine cap deploy
tue es diese Dateien entfernt in releases/
speichern und das Verzeichnis mit der ursprünglichen Kopie im Repository gespeichert ersetzen.
Ich frage mich, was der beste Weg ist, diese Dateien auf dem Server, in dem current
Verzeichnis zu halten. Einige meiner Ideen sind:
- Entfernen Sie das Verzeichnis aus der Quellcodeverwaltung und ersetzen Sie es mit einem Link zu einem externen Verzeichnis, das von Capistrano nicht verwaltet wird.
- Erstellen Sie eine Capistrano Aufgabe, das Verzeichnis / tmp zu kopieren, bevor die Bereitstellung und es dann zu / public Kopieren zurück, nachdem sie die Bereitstellung von getan hat.
Gibt es Standard-Weg, dies zu tun?
Lösung
Sie können einen Symlink-Dateien in ein anderes Verzeichnis auf Ihrem Rechner, für Beispiele, die die / shared-Verzeichnis auf dem gleichen Niveau wie / Strom und / releases.
Überprüfen Sie heraus Capistrano verwaltet das / log und / tmp.
Andere Tipps
Für die Zukunft Rekord, das ist die Aufgabe, die ich es zu tun pflegte mit einem gemeinsamen Verzeichnis:
task :link_shared_directories do
run "ln -s #{shared_path}/files #{release_path}/public/files"
end
after "deploy:update_code", :link_shared_directories
Jetzt können wir einfach nutzen: linked_files in deploy.rb:
set :linked_files, %w{config/database.yml}
In diesem Fall wird die Datei [target_dir] /shared/config/database.yml auf dem Server vorhanden sein muss.