Manter arquivos estáticos no servidor ao implantar com Capistrano
-
06-07-2019 - |
Pergunta
Eu sou upload de arquivos para minha pasta public/files
de uma aplicação Rails em uma base constante através de uma interface web.
Eu não quero mantê-los no controle de origem, uma vez que vai para quase 2 GBs, por isso cada vez que eu faço um cap deploy
ele irá salvar esses arquivos afastado em releases/
e substituir o diretório com a cópia pura armazenado no repositório.
Eu estou querendo saber qual é a melhor maneira de manter esses arquivos no servidor, no diretório current
. Algumas das minhas ideias são:
- Remova o diretório do controle de origem e substituí-lo com um link para um diretório externo que não é gerido por Capistrano.
- Criar uma tarefa Capistrano para copiar o diretório / tmp antes de implantar e depois copiá-lo de volta para / public depois de pronto Implantando.
Existe uma maneira padrão para fazer isso?
Solução
Você poderia fazer arquivos de um link simbólico para outro diretório em sua máquina, por exemplos o diretório / shared no mesmo nível como / corrente e / releases.
Confira Capistrano administra o / log e / tmp diretórios.
Outras dicas
Para o registro futuro, esta é a tarefa que eu costumava fazer isso com um diretório compartilhado:
task :link_shared_directories do
run "ln -s #{shared_path}/files #{release_path}/public/files"
end
after "deploy:update_code", :link_shared_directories
Agora podemos simplesmente usar: linked_files em deploy.rb:
set :linked_files, %w{config/database.yml}
Neste caso, o arquivo [target_dir] /shared/config/database.yml deve existir no servidor.