Conserver des fichiers statiques sur le serveur lors du déploiement avec Capistrano
-
06-07-2019 - |
Question
Je télécharge des fichiers dans le dossier public / files
d'une application Rails de manière constante via une interface Web.
Je ne veux pas les garder dans le contrôle de code source, car ils utilisent presque 2 Go. Ainsi, chaque fois que je fais un cap deploy
, ces fichiers seront sauvegardés dans versions /
et remplacez le répertoire par la copie originale stockée dans le référentiel.
Je me demande quel est le meilleur moyen de conserver ces fichiers sur le serveur, dans le répertoire actuel
. Certaines de mes idées sont:
- Supprimez le répertoire du contrôle de code source et remplacez-le par un lien vers un répertoire externe non géré par Capistrano.
- Créez une tâche Capistrano pour copier le répertoire dans / tmp avant le déploiement, puis recopiez-la dans / public une fois le déploiement terminé.
Existe-t-il un moyen standard de procéder?
La solution
Vous pouvez créer un lien symbolique dans les fichiers vers un autre répertoire de votre ordinateur, par exemple le répertoire / shared au même niveau que / current et / releases.
Check out capistrano gère les répertoires / log et / tmp.
Autres conseils
Pour le futur enregistrement, voici la tâche que je faisais auparavant 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
Nous pouvons maintenant simplement utiliser: fichiers liés dans deploy.rb:
set :linked_files, %w{config/database.yml}
Dans ce cas, le fichier [rép_abaque] /shared/config/database.yml doit exister sur le serveur.