开发者

How to just start 1 production Resque worker from Capistrano?

I've got Redis/Resque installed but I'm having a hard time starting/restarting it from Capistrano when I deploy.

My needs are fairly simple: I only have 1 queue, only need 1 worker, and I'm not using monit or god.

Based on this blog post, my deploy.rb has this:

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'

My resque.rake file (based on the Railscast) has:

require "resque/tasks"  

task "resque:setup" => :environment

When I cap deploy, everything seems to work but there are no workers running when I look at resque-web ...


I suggest you look at this StackOverflow question and this gist for quite a few suggestions.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜