Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Pulse adds an action to your rails app that can be used for external health checking

branch: master

This branch is 0 commits ahead and 0 commits behind master

Fetching latest commit…

Cannot retrieve the latest commit at this time



Pulse adds an action to your rails project that can be used for external health checking. The most common use is by a http proxy such as haproxy or a monitoring tool such as god.



  • Rails
  • MySQL, Postgres, or Oracle. sqlite not supported, sorry.


In your config/environment.rb:

    config.gem 'jnewland-pulse', :lib => 'pulse', :source => ''

Install the gem:

    rake gems:install

Finally, add a route to config/routes.rb:

    map.pulse 'pulse'

This configures pulse to work at the ‘pulse’ URL. If you would rather use a different URL:

    map.pulse 'some/other/url'

haproxy configuration

haproxy can be configured to use the /pulse url for its health checking. Just add:

    option httpchk GET /pulse
    listen rails :9000
      server rails-1 localhost:8000 maxconn 1 check inter 20000 fall 1
      server rails-2 localhost:8001 maxconn 1 check inter 20000 fall 1

god configuration

You are using god to watch your mongrels, right?

In your mongrel watch, add the following restart condition:

    w.restart_if do |restart|
      restart.condition(:http_response_code) do |c|
        c.code_is_not = 200 = 'localhost'
        c.path = '/pulse'
        c.port = 8000
        c.timeout = 5.seconds
        c.interval = 20.seconds

Also make sure to give your mongrels a nice grace period.

    w.start_grace = 90.seconds
    w.restart_grace = 90.seconds

For a complete god configuration example, check out my god_examples project and the included sample rails god config.


Released under Ruby’s license

Something went wrong with that request. Please try again.