Iniciando ou reiniciando o Unicorn com o Capistrano 3.x

Eu estou tentando iniciar ou reiniciar o Unicorn quando eu façocap production deploy com o Capistrano 3.0.1. Eu tenho alguns exemplos que eu comecei a trabalhar com o Capistrano 2.x usando algo como:

namespace :unicorn do
  desc "Start unicorn for this application"
  task :start do
    run "cd #{current_path} && bundle exec unicorn -c /etc/unicorn/myapp.conf.rb -D"
  end
end

Mas quando eu tento usarrun nodeploy.rb para Capistrano 3.x eu recebo um erro de método indefinido.

Aqui estão algumas das coisas que eu tentei:

# within the :deploy I created a task that I called after :finished
namespace :deploy do
...

  task :unicorn do
    run "cd #{current_path} && bundle exec unicorn -c /etc/unicorn/myapp.conf.rb -D"
  end

  after :finished, 'deploy:unicorn'

end

Eu também tentei colocar a corrida dentro da tarefa: restart

namespace :deploy do
  desc 'Restart application'
  task :restart do

  on roles(:app), in: :sequence, wait: 5 do
    # Your restart mechanism here, for example:
    # execute :touch, release_path.join('tmp/restart.txt')
    execute :run, "cd #{current_path} && bundle exec unicorn -c /etc/unicorn/deployrails.conf.rb -D"
  end
end    

Se eu uso apenasrun "cd ... " then I'll get anúmero errado de argumentos (1 para 0) `no shell local.

Eu posso começar o processo de unicórnio comunicorn -c /etc/unicorn/deployrails.conf.rb -D do meu shell de ssh'd VM.

Eu posso matar o processo mestre Unicorn do shell da VM usando kill USR2, mas mesmo que o processo seja morto, recebo um erro. Eu posso então iniciar o processo novamente usandounicorn -c ...

$ kill USR2 58798
bash: kill: USR2: arguments must be process or job IDs

Eu sou muito novo no Ruby, Rails e Implantação em geral. Eu tenho uma configuração do VirtualBox com Ubuntu, Nginx, RVM e Unicorn, estou muito animado até agora, mas este está realmente mexendo comigo, qualquer conselho ou insight é apreciado.

questionAnswers(4)

yourAnswerToTheQuestion