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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top