WoopraRails
A gem for Ruby on Rails (version 3 and higher, wont work with Rails 4) to connect through the HTTP API interface to log pageviews, identities, and custom events to Woopra Analytics
Installation
Add this line to your application's Gemfile:
gem 'woopra_rails'
And then execute:
$ bundle
Or install it yourself as:
$ gem install woopra_rails
Initial setup
Within your app/config directory, add the file 'woopra.yml' that looks like the following (but with your account):
development:
account: woopra-rails
dryrun: true
test:
account: woopra-rails
dryrun: true
production:
account: woopra-rails
dryrun: false
At this point, Woopra should initialize on app load and be ready for usage. The last step is to extend your application controller with the ActiveSupport::Concerns functionality to allow for user identity tracking for anonymous users. Add the following to your application_controller.rb
include WoopraRails::Session
Usage
All API actions return a WoopraRails::Response object. To check for success, assign the return to a variable, e.g. response, and call success? for a boolean return
response = WoopraRails.identify("me")
response.success? #returns true
Identify the current user: We use the Rails session_id for user cookie management. This session id is not sent over the wire, and is done with MD5 digest.
response = WoopraRails.identify("Kevin Hopkins", "me@kevinlhopkins.com", session[:session_id])
Log a pageview:
WoopraRails.log_pageview("Page Title", "/path/to/this/page")
Log a custom event: This functionality is pretty extensible. It expects an event name, and a hash of params that are turned into Woopra event descriptors.
WoopraRails.log_event(
"my_test_event",
{
user_name: "Kevin Hopkins",
user_state: "Virginia",
user_skills: "Development, Rails, Woopra, Analytics"
}
)
When running in dev or test where you don't want to record to your production dataset of analytics, set dryrun to true in your woopra.yml. This will return success whenever a call is made, but the request wont be sent.
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request
Contributions
Rob Gleeson -- Thanks for the help and code reviews! Github
GeneralAssemb.ly -- Thanks for the use-case to give me the opportunity to give back to the Rails community (http://generalassemb.ly)