Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save vvalgis/393178 to your computer and use it in GitHub Desktop.
Save vvalgis/393178 to your computer and use it in GitHub Desktop.
Capistrano tasks for starting unicorn
set :rails_env, :production
set :unicorn_binary, "/usr/bin/unicorn"
set :unicorn_config, "#{current_path}/config/unicorn.rb"
set :unicorn_pid, "#{current_path}/tmp/pids/unicorn.pid"
namespace :deploy do
task :start, :roles => :app, :except => { :no_release => true } do
run "cd #{current_path} && #{try_sudo} #{unicorn_binary} -c #{unicorn_config} -E #{rails_env} -D"
end
task :stop, :roles => :app, :except => { :no_release => true } do
run "#{try_sudo} kill `cat #{unicorn_pid}`"
end
task :graceful_stop, :roles => :app, :except => { :no_release => true } do
run "#{try_sudo} kill -s QUIT `cat #{unicorn_pid}`"
end
task :reload, :roles => :app, :except => { :no_release => true } do
run "#{try_sudo} kill -s USR2 `cat #{unicorn_pid}`"
end
task :restart, :roles => :app, :except => { :no_release => true } do
stop
start
end
end
@plentz
Copy link

plentz commented Mar 3, 2012

just made a test here and using reload, it reloaded the app code too. I think it's better(and faster) then the stop/restart process http://unicorn.bogomips.org/SIGNALS.html

@vvalgis
Copy link
Author

vvalgis commented Mar 3, 2012

If restart as usual, when you deploy for example, then you are right. I use reload task in the most of cases. But sometimes need to use hard reset, in case of server glitches.

@NARKOZ
Copy link

NARKOZ commented Dec 5, 2012

The letter flag itself is optional: both kill USR2 and kill -s USR2 do the same thing.

@TheKidCoder
Copy link

Minor tip, might help speed up a bit. Instead of using ruby backticks for the PID, do it the UNIX way.

run "kill -s USR2 $(< #{unicorn_pid})"

@thiyagarajan
Copy link

Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment