2008-11-04 3 views
6

Je télécharge des fichiers dans mon dossier public/files d'une application Rails de façon constante via une interface Web. Je ne veux pas les garder dans le contrôle de la source, car ils vont pour presque 2 Go, donc chaque fois que je fais un cap deploy il va enregistrer ces fichiers dans releases/ et remplacer le répertoire par la copie vierge stockée dans le référentiel .Conservation des fichiers statiques sur le serveur lors du déploiement avec Capistrano

Je me demande quelle est la meilleure façon de conserver ces fichiers sur le serveur, dans le répertoire current. Certaines de mes idées sont:

  • Supprimez le répertoire du contrôle source et remplacez-le 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 dans/tmp avant de le déployer, puis copiez-le dans/public après son déploiement.

Existe-t-il une façon standard de le faire?

Répondre

6

Vous pouvez créer 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.

7

Pour mémoire future, c'est la tâche que je l'habitude de 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 
2

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

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

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

Questions connexes