diff --git a/config/deploy.rb b/config/deploy.rb index c67c374a3..3dc198504 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -62,8 +62,9 @@ namespace :deploy do end after "deploy:update_code", "deploy:symlink_all", "deploy:migrate" -after "deploy:restart","bluepill:stop", "delayed_job:restart", "deploy:cleanup", "bluepill:start" after "deploy:setup", "deploy:symlink_pids" +after "deploy:restart","bluepill:processes:restart_dj" # "bluepill:restart" +after "deploy:restart", "deploy:cleanup" require 'cape' namespace :rake_tasks do diff --git a/config/production.pill b/config/production.pill index ff49759fc..3199e382a 100644 --- a/config/production.pill +++ b/config/production.pill @@ -11,6 +11,7 @@ Bluepill.application(app_name) do |app| process.start_command = "/usr/bin/env RAILS_ENV=production script/delayed_job start" process.stop_command = "/usr/bin/env RAILS_ENV=production script/delayed_job stop" + process.restart_command = "/usr/bin/env RAILS_ENV=production script/delayed_job restart" process.pid_file = File.join(app.working_dir, 'tmp', 'pids', 'delayed_job.pid') end diff --git a/lib/recipes/bluepill.rb b/lib/recipes/bluepill.rb index a84ff7ecb..969728664 100644 --- a/lib/recipes/bluepill.rb +++ b/lib/recipes/bluepill.rb @@ -3,29 +3,46 @@ Capistrano::Configuration.instance(:must_exist).load do namespace :bluepill do set(:bluepill_binary) {"bundle exec bluepill --no-privileged"} - desc "Load bluepill configuration and start it" + namespace :processes do + desc "Start processes that bluepill is monitoring" + task :start, :roles => [:app] do + run "cd #{fetch :current_path} && #{try_sudo} #{bluepill_binary} #{fetch :application} start" + end + + desc "Stop processes that bluepill is monitoring" + task :stop, :roles => [:app], :on_error => :continue do + run "cd #{fetch :current_path} && #{try_sudo} #{bluepill_binary} #{fetch :application} stop" + end + + desc "Restart processes that bluepill is monitoring" + task :restart, :roles => [:app] do + run "cd #{fetch :current_path} && #{try_sudo} #{bluepill_binary} #{fetch :application} restart" + end + + desc "Prints bluepills monitored processes statuses" + task :status, :roles => [:app] do + run "cd #{fetch :current_path} && #{try_sudo} #{bluepill_binary} #{fetch :application} status" + end + + desc "Restart DJ process" + task :restart_dj, :roles => [:app] do + run "cd #{fetch :current_path} && #{try_sudo} #{bluepill_binary} #{fetch :application} restart delayed_job" + end + end + + desc "Start a bluepill process and load a config" task :start, :roles => [:app] do run "cd #{fetch :current_path} && #{try_sudo} APP_NAME=#{fetch :application} #{bluepill_binary} load config/production.pill" end - desc "Stop processes that bluepill is monitoring" - task :stop, :roles => [:app], :on_error => :continue do - run "cd #{fetch :current_path} && #{try_sudo} #{bluepill_binary} #{fetch :application} stop" - end - - task :restart, :roles => [:app] do - # run "cd #{fetch :current_path} && #{try_sudo} #{bluepill_binary} #{fetch :application} restart" - stop; quit; start - end - - desc "Stop processes that bluepill is monitoring and quit bluepill" - task :quit, :roles => [:app] do + desc "Quit bluepill" + task :stop, :roles => [:app] do run "cd #{fetch :current_path} && #{try_sudo} #{bluepill_binary} #{fetch :application} quit" end - desc "Prints bluepills monitored processes statuses" - task :status, :roles => [:app] do - run "cd #{fetch :current_path} && #{try_sudo} #{bluepill_binary} #{fetch :application} status" + desc "Completely restart bluepill and monitored services" + task :restart, :roles => [:app] do + processes.stop; stop; start end end end