Programming
Article
By Tim Lucas

Roll your own dispatch reaper script

By Tim Lucas
Help us help you! You'll get a... FREE 6-Month Subscription to SitePoint Premium Plus you'll go in the draw to WIN a new Macbook SitePoint 2017 Survey Yes, let's Do this It only takes 5 min

If you haven’t used it before, the reaper script is useful for restarting your Rails application’s FastCGI dispatchers.

It’s seems the reaper script in Edge rails now relies on the existance of PID files in the tmp/pids directory. If you want to replicate the old functionality, create your own ruby script and override the capistrano restart task to call your own script instead of the standard script/reaper.

The reaper script for one of my apps is simply:


#!/usr/bin/env ruby
for process in `ps axwwl`.grep(/dispatch.fcgi/).collect { |s| s.split[1] }
  puts "Sending USR2 to dispatch.fcgi process #{process}"
  Process.kill("USR2", process.to_i)
end

The above code is in script/my_reaper and is called from the Capistrano deployment recipe as below:


task :restart, :roles => :app do
 run "ruby #{deploy_to}/current/script/process/my_reaper"
end
Login or Create Account to Comment
Login Create Account
Recommended
Sponsors
Get the most important and interesting stories in tech. Straight to your inbox, daily.Is it good?