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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top