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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top