diff --git a/config/deploy.rb b/config/deploy.rb index fa4acc9c5fd..87c69080ad7 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -74,36 +74,31 @@ end end -namespace :delayed_job do - desc "Start delayed_job process" - task :start, :roles => :app do - run "sudo monit start delayed_job_#{rails_env}" +namespace :bluepill do + desc "Stop processes that bluepill is monitoring and quit bluepill" + task :quit, :roles => [:app] do + sudo "bluepill stop" + sudo "bluepill quit" end - desc "Stop delayed_job process" - task :stop, :roles => :app do - run "sudo monit stop delayed_job_#{rails_env}" + desc "Load bluepill configuration and start it" + task :start, :roles => [:app] do + sudo "bluepill load #{release_path}/config/pills/#{rails_env}.rb" end - desc "Restart delayed_job process" - task :restart, :roles => :app do - run "sudo monit stop delayed_job_#{rails_env}" - sleep 5 - run "sudo monit start delayed_job_#{rails_env}" + desc "Prints bluepills monitored processes statuses" + task :status, :roles => [:app] do + sudo "bluepill status" end end -after "deploy:start", "delayed_job:start" -after "deploy:stop", "delayed_job:stop" -after "deploy:restart", "delayed_job:restart" +after "deploy:update", "bluepill:quit", "bluepill:start" after "deploy:update_code", "deploy:bundle" after "deploy", "deploy:migrate_with_bundler" after "deploy", "deploy:cleanup" after "deploy:symlink", "deploy:move_in_database_yml", "deploy:move_in_secret_settings" - - Dir[File.join(File.dirname(__FILE__), '..', 'vendor', 'gems', 'hoptoad_notifier-*')].each do |vendored_notifier| $: << File.join(vendored_notifier, 'lib') end diff --git a/config/pill.rb b/config/pill.rb new file mode 100644 index 00000000000..3f0851f48f2 --- /dev/null +++ b/config/pill.rb @@ -0,0 +1,18 @@ +REE_PATH = "/opt/ruby-enterprise-1.8.7-2010.02/bin" + +Bluepill.application("gemcutter") do |app| + app.process("delayed_job") do |process| + process.working_dir = "#{RELEASE_PATH}/current" + + process.start_grace_time = 10.seconds + process.stop_grace_time = 10.seconds + process.restart_grace_time = 10.seconds + + process.start_command = "PATH=#{REE_PATH}:$PATH script/delayed_job start" + process.stop_command = "PATH=#{REE_PATH}:$PATH script/delayed_job stop" + + process.pid_file = "#{RELEASE_PATH}/shared/pids/delayed_job.pid" + + process.uid = process.gid = "rubycentral" + end +end diff --git a/config/pills/production.rb b/config/pills/production.rb new file mode 100644 index 00000000000..58f22224e3d --- /dev/null +++ b/config/pills/production.rb @@ -0,0 +1,2 @@ +RELEASE_PATH = "/var/www/rubycentral/gemcutter.org" +require '../pill' diff --git a/config/pills/staging.rb b/config/pills/staging.rb new file mode 100644 index 00000000000..f2fcf8cc5f3 --- /dev/null +++ b/config/pills/staging.rb @@ -0,0 +1,2 @@ +RELEASE_PATH = "/var/www/rubycentral/staging.gemcutter.org" +require '../pill'