Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Ruby server library for the Pusher API

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 examples Added an example June 07, 2011
Octocat-spinner-32 lib
Octocat-spinner-32 spec
Octocat-spinner-32 .document Initial commit to pusher. February 04, 2010
Octocat-spinner-32 .gemtest Try out gem-testers.org February 23, 2011
Octocat-spinner-32 .gitignore
Octocat-spinner-32 .travis.yml
Octocat-spinner-32 Gemfile
Octocat-spinner-32 LICENSE
Octocat-spinner-32 README.md
Octocat-spinner-32 Rakefile Try out gem-testers.org February 23, 2011
Octocat-spinner-32 pusher.gemspec
README.md

Pusher gem

Getting started

After registering at http://pusher.com configure your app with the security credentials

Pusher.app_id = 'your-pusher-app-id'
Pusher.key = 'your-pusher-key'
Pusher.secret = 'your-pusher-secret'

Trigger an event with {Pusher::Channel#trigger!}

Pusher['a_channel'].trigger!('an_event', {:some => 'data'})

Handle errors by rescuing Pusher::Error (all Pusher errors are descendants of this error)

begin
  Pusher['a_channel'].trigger!('an_event', {:some => 'data'})
rescue Pusher::Error => e
  # (Pusher::AuthenticationError, Pusher::HTTPError, or Pusher::Error)
end

Optionally a socket id may be provided. This will exclude the event from being triggered on this socket id (see http://pusher.com/docs/publisher_api_guide/publisher_excluding_recipients for more info).

Pusher['a_channel'].trigger!('an_event', {:some => 'data'}, socket_id)

If you don't need to handle failure cases, then you can simply use the {Pusher::Channel#trigger} method, which will rescue and log any errors for you

Pusher['a_channel'].trigger('an_event', {:some => 'data'})

Logging

Errors are logged to Pusher.logger. It will by default use Logger from stdlib, however you can assign any logger:

Pusher.logger = Rails.logger

Asynchronous triggering

To avoid blocking in a typical web application, you may wish to use the {Pusher::Channel#trigger_async} method which makes asynchronous API requests. trigger_async returns a deferrable which you can optionally bind to with success and failure callbacks.

You need to be running eventmachine to make use of this functionality. This is already the case if, for example, you're deploying to Heroku or using the Thin web server. You will also need to add em-http-request to your Gemfile.

$ gem install em-http-request

deferrable = Pusher['a_channel'].trigger_async('an_event', {
  :some => 'data'
}, socket_id)
deferrable.callback {
  # Do something on success
}
deferrable.errback { |error|
  # error is a instance of Pusher::Error
}

Private channels

The Pusher Gem also deals with signing requests for authenticated private channels. A quick Rails controller example:

reponse = Pusher['private-my_channel'].authenticate(params[:socket_id])
render :json => response

Read more about private channels in the docs and under {Pusher::Channel#authenticate}.

Developing

Use bundler in order to run specs with the correct dependencies.

bundle
bundle exec rspec spec/*_spec.rb

Copyright

Copyright (c) 2010 New Bamboo. See LICENSE for details.

Something went wrong with that request. Please try again.