Excluindo um diretório remoto usando capistrano

2

Estou usando o Capistrano para implantar um aplicativo Ruby on Rails em um servidor. Tudo está correndo até o ponto em que o bundle install é chamado e, nesse caso, recebo o erro "Algumas gemas parecem estar faltando no diretório vendor / cache".

Este erro é causado porque há algumas gemas verificadas no diretório vendor / cache do repositório git do qual o Capistrano está sendo clonado. Eu entendo que a melhor abordagem seria limpar o repositório git, mas como isso não é uma opção para mim, eu gostaria de ter o Capistrano excluindo o diretório vendor / cache no servidor remoto após o clone do git, mas antes da chamada para o empacotamento. Eu executei as etapas manualmente e descobri que ao excluir o diretório manualmente, o bundle é executado corretamente, mas não consigo descobrir como obter o Capistrano para executar a exclusão.

Aqui está o fragmento pertinente do meu arquivo deploy.rb:

after "deploy:update_code" do
  run "rm -rf #{release_path}/vendor/cache"
end
after "deploy:update_code", "bundle:install"

E aqui está a saída da linha de comando

executing 'deploy:update_code'
executing locally: "git ls-remote my_git_repository HEAD"
command finished in xxxms
* executing "git clone [snipped for brevity]
servers: ["my_server"]
[my_server] executing command
** [my_server :: out] Error reading response length from authentication socket.
** [my_server :: out]
command finished in xxxms
* executing 'deploy:finalize_update'
triggering before callbacks for 'deploy:finalize_update'
* executing 'bundle:install'
* executing "[snipped for brevity] bundle install [snipped for brevity]"
servers: ["my_server"]
[my_server] executing command
** [out :: my_server] Some gems seem to be missing from your vendor/cache directory.
** [out :: my_server] 
** [out :: my_server] Could not find gem-version in any of the sources
** [out :: my_server] 
command finished in xxxms

Não parece que run "rm -rf #{release_path}/vendor/cache" seja executado. Estou usando o comando correto? Alguma outra ideia sobre o que devo fazer?

    
por rancidfishbreath 14.08.2012 / 20:32

1 resposta

1

Eu estou querendo saber se é um problema com a ordem em que as tarefas estão sendo executadas; talvez tente o seguinte?

task :clean_vendor_cache do
  run "rm -rf #{release_path}/vendor/cache"
end
before "bundle:install", "clean_vendor_cache"
    
por 20.08.2012 / 15:08