Conservazione dei file statici nel server durante la distribuzione con Capistrano
-
06-07-2019 - |
Domanda
Sto caricando i file nella mia cartella public / files
di un'applicazione Rails su base costante tramite un'interfaccia web.
Non voglio mantenerli nel controllo del codice sorgente poiché durano quasi 2 GB, quindi ogni volta che eseguo un cap deploy
salverà quei file nelle versioni /
e sostituisci la directory con la copia originale memorizzata nel repository.
Mi chiedo quale sia il modo migliore per conservare quei file nel server, nella directory current
. Alcune delle mie idee sono:
- Rimuovere la directory dal controllo del codice sorgente e sostituirla con un collegamento a una directory esterna non gestita da Capistrano.
- Crea un'attività Capistrano per copiare la directory in / tmp prima di distribuirla e poi copiarla di nuovo in / public dopo aver terminato la distribuzione.
Esiste un modo standard per farlo?
Soluzione
È possibile rendere i file un collegamento simbolico a un'altra directory sul proprio computer, ad esempio la directory / shared allo stesso livello di / current e / release.
Dai un'occhiata a capistrano gestisce le directory / log e / tmp.
Altri suggerimenti
Per il record futuro, questa è l'attività che ho usato per farlo con una directory condivisa:
task :link_shared_directories do
run "ln -s #{shared_path}/files #{release_path}/public/files"
end
after "deploy:update_code", :link_shared_directories
Ora possiamo semplicemente usare: linked_files in deploy.rb:
set :linked_files, %w{config/database.yml}
In questo caso, il file [target_dir] /shared/config/database.yml deve esistere sul server.