Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Health checking Rack middleware

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 examples
Octocat-spinner-32 lib
Octocat-spinner-32 spec
Octocat-spinner-32 .gitignore
Octocat-spinner-32 Gemfile
Octocat-spinner-32 Guardfile
Octocat-spinner-32 README.md
Octocat-spinner-32 Rakefile
Octocat-spinner-32 rack-ping.gemspec
README.md

Rack::Ping

A Rack middleware that should indicate the health of your service.

Usage

Here is a simple example (see examples)

map '/ping' do
  use Rack::Ping do |ping|
    ping.check_url  "http://localhost:9292/"
    ping.ok_regex /goodbye/
  end
end

run lambda{|env| [200, {'Content-Type' => 'text/html'}, ["hello"]]}

Note: for pre-1.4.0 Rack, do this:

p = Rack::Ping.new(nil)
p.check { true }
run Rack::URLMap.new("/" => My::App, "/ping" => p)

Due to different to_app strategy: https://github.com/rack/rack/blob/master/lib/rack/builder.rb#L130

Options

When building/mounting your rack, use the ping configuration variable, specify:

  • version is an accessor for your application version. App::VERSION would be a good idea.
  • check_url is a url that ping will fetch and run ok_regex on. If the match is ok, we're good. You must specify check_url and ok_regex togather. timeout_secs is the amount of seconds we wait until spitting out an error.
  • check will accept a block to run. This is a good alternative to check_url: run a couple of sanity checks to indicate you're good.
  • ok_code, error_code, ok_text, error_text are configuration for you to use, to configure against LB quirks. The default config should work against ELBs (Amazon elastic LB).

Headers

ping will output intelligent headers. First x-ping-error will try to explain why ping failed.

Next, x-app-version will expose the current deployed version of your app. This is good in order to validate nothing crawled up to production, as well as validation for post-production deployment.

ping will bust any browser/client cache for you.

Contributing

Guard is set up for your ease of development. Here's how to go from 0 to ready.

$ git clone https://github.com/jondot/rack-ping
$ cd rack-ping
$ bundle install
$ guard

Fork, implement, add tests, pull request, get my everlasting thanks and a respectable place here :).

Copyright

Copyright (c) 2011 Dotan Nahum @jondot. See MIT-LICENSE for further details.

Something went wrong with that request. Please try again.