Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
A gem for talking to the pagerduty API
branch: master
Failed to load latest commit information.
lib Merge pull request #21 from envato/error_management
script include a setup script for new starters
spec fix deprecations for rspec 2.99.x
.gitignore ignore the bin directory
.travis.yml Don't test on Ruby 1.8.7 or 1.9.2
Gemfile Convert to release with bundler instead of jeweler.
LICENSE.txt Add a license badge
Rakefile Remove rake task for generating documentation.
pagerduty.gemspec Specs break with RSpec 3.x, limiting to 2.x.


License MIT Gem Version Build Status

Provides a lightweight Ruby interface for calling the PagerDuty Integration API.


Add this line to your application's Gemfile:

gem 'pagerduty'

And then execute:

$ bundle

Or install it yourself as:

$ gem install pagerduty


# Don't forget to require the library
require "pagerduty"

# Instantiate a Pagerduty with your specific service key
pagerduty ="<my-service-key>")

# Trigger an incident
incident = pagerduty.trigger("incident description")

# Acknowledge and/or resolve the incident

There are a whole bunch of properties you can send to PagerDuty when triggering an incident. See the PagerDuty documentation for the specifics.

  "incident description",
  :incident_key => "my unique incident identifier",
  :client       => "server in trouble",
  :client_url   => "",
  :details      => { :my => "extra details" },

Debugging Error Responses

The gem doesn't encapsulate HTTP error responses from PagerDuty. Here's how to go about debugging these unhappy cases:

  pagerduty.trigger("incident description")
rescue Net::HTTPServerException => error
  error.response.code    #=> "400"
  error.response.message #=> "Bad Request"
  error.response.body    #=> "{\"status\":\"invalid event\",\"message\":\"Event object is invalid\",\"errors\":[\"Service key is the wrong length (should be 32 characters)\"]}"

Upgrading to Version 2.0.0

The API has changed in three ways that you need to be aware of:

  1. Pagerduty class initialiser no longer accepts an incident_key. This attribute can now be provided when calling the #trigger method (see above).

  2. Pagerduty#trigger arguments have changed to accept all available options rather than just details.

    # This no longer works post v2.0.0. If you're
    # providing details in this form, please migrate.
    pagerduty.trigger("desc", :key => "value")
    # Post v2.0.0 this is how to send details (migrate to this please).
    pagerduty.trigger("desc", :details => { :key => "value" })
  3. PagerdutyException now extends from StandardError rather than Exception. This may affect how you rescue the error. i.e. rescue StandardError will now rescue a PagerdutyException where it did not before.


  1. Fork it ([my-github-username]/pagerduty/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request
Something went wrong with that request. Please try again.