#! /usr/bin/env ruby app_name = ENV['APP_NAME'] || 'rosa_build' Bluepill.application(app_name) do |app| app.uid = app.gid = 'rosa' app.working_dir = "/srv/#{app_name}/current" app.process("delayed_job") do |process| process.start_grace_time = 10.seconds process.stop_grace_time = 10.seconds process.restart_grace_time = 10.seconds 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.pid_file = File.join(app.working_dir, 'tmp', 'pids', 'delayed_job.pid') end app.process("newrelic") do |process| process.start_grace_time = 10.seconds process.stop_grace_time = 10.seconds process.restart_grace_time = 10.seconds path = File.join(app.working_dir, 'tmp', 'pids', 'newrelic.pid') process.start_command = "/usr/bin/env /usr/local/bin/nrsysmond -c /etc/newrelic/nrsysmond.cfg -p #{path}" process.pid_file = path end app.process("unicorn") do |process| process.start_grace_time = 8.seconds process.stop_grace_time = 5.seconds process.restart_grace_time = 13.seconds process.start_command = "bundle exec unicorn -l /tmp/#{app_name}_unicorn.sock -E production -c config/unicorn.rb -D" process.stop_command = "kill -QUIT {{PID}}" process.restart_command = "kill -USR2 {{PID}}" process.pid_file = File.join(app.working_dir, 'tmp', 'pids', 'unicorn.pid') process.monitor_children do |child_process| child_process.stop_command = "kill -QUIT {{PID}}" child_process.checks :mem_usage, :every => 10.seconds, :below => 150.megabytes, :times => [3,4], :fires => :stop child_process.checks :cpu_usage, :every => 10.seconds, :below => 20, :times => [3,4], :fires => :stop end end end