6 votes

Conserver les fichiers statiques dans le serveur lors du déploiement avec Capistrano

Je télécharge des fichiers sur mon public/files d'une application Rails sur une base constante via une interface web.

Je ne veux pas les garder dans le contrôle de source car ils représentent presque 2 Go, donc à chaque fois que je fais un cap deploy il sauvegardera ces fichiers dans releases/ et remplacer le répertoire par la copie vierge stockée dans le référentiel.

Je me demande quelle est la meilleure façon de conserver ces fichiers dans le serveur, dans le répertoire current répertoire. Voici quelques-unes de mes idées :

  • Retirer le répertoire du contrôle de source et le remplacer par un lien vers un répertoire externe qui n'est pas géré par Capistrano.
  • Créez une tâche Capistrano pour copier le répertoire vers /tmp avant de le déployer, puis le recopier vers /public une fois le déploiement terminé.

Existe-t-il un moyen standard de le faire ?

7voto

Federico Builes Points 1940

Pour l'avenir, voici la tâche que j'ai utilisée pour le faire avec un répertoire partagé :

task :link_shared_directories do     
  run "ln -s #{shared_path}/files #{release_path}/public/files"   
end    

after "deploy:update_code", :link_shared_directories

6voto

jonnii Points 17046

Vous pouvez faire des fichiers un lien symbolique vers un autre répertoire de votre machine, par exemple le répertoire /shared au même niveau que /current et /releases.

Vérifiez que capistrano gère les répertoires /log et /tmp.

2voto

Chad Johnson Points 3792

Maintenant, nous pouvons simplement utiliser :linked_files dans deploy.rb :

set :linked_files, %w{config/database.yml}

Dans ce cas, le fichier [target_dir]/shared/config/database.yml doit exister sur le serveur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X