rack-ping
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:Health checking Rack middleware
# Rack::Ping
A Rack middleware that should indicate the health of your service.


## Usage

Here is a simple example (see `examples`):

```ruby
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"]]}
```

If you also run on Rails, for more control, you can also use it in directly your routes:

```ruby
# no block
Rails.application.routes.draw do
  mount Rack::Ping.new => '/ping'
end

# using a ping block
Rails.application.routes.draw do
  mount Rack::Ping.new { |ping|
    ping.check_url "http://example.com"
  }, at: '/ping'
end
```


Note: for pre-1.4.0 Rack, do this:

    p = Rack::Ping.new
    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](http://gplus.to/dotan) [@jondot](http://twitter.com/jondot). See MIT-LICENSE for further details.


本源码包内暂不包含可直接显示的源代码文件,请下载源码包。