У меня установлен Redis / Resque, но мне трудно запускать / перезапускать его с Capistrano при развертывании.
Мои потребности довольно просты: у меня только 1 очередь, мне нужен только 1 работник, и я не использую monit или god.
Исходя из этого сообщения в блоге , мой deploy.rb имеет следующее:
namespace :deploy do
task :start do ; end
task :stop do ; end
task :restart, :roles => :app, :except => { :no_release => true } do
run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
end
task :restart_resque do
pid_file = "#{shared_path}/pids/resque.pid"
run "test -f #{pid_file} && cd #{current_path} && kill -s QUIT `cat #{pid_file}` || rm -f #{pid_file}"
run "cd #{current_path}; RAILS_ENV=production QUEUE='*' VERBOSE=1 nohup rake environment resque:work& > #{shared_path}/log/resque.log && echo $! > #{pid_file}"
end
end
after 'deploy:restart', 'deploy:restart_resque'
Мой файл resque.rake (на основе Railscast) имеет:
require "resque/tasks"
task "resque:setup" => :environment
Когда я cap deploy
, кажется, что все работает, но нет рабочих, когда я смотрю на resque-web ...