Server-side integration of web tracking methods does not require Javascript snippets or tracking images to be includd in the actual frontend. Rakwik implements asynchronous tracking, so it tries to keep the time low that is needed to count a particular request.
Unlike client-side tracking, server-side tracking can be used independently of frontend encryption. Your application requires SSL encryption, but your installation of Piwik does not support it? That's what Rakwik ist built for: It can track a request using http while the original request came in over https, without the browser having to warn the user about mixed content.
Using server-side tracking, you can track all kinds of information that are visible to your server. Most certainly the URL, IP address and referrer are used, also session information to identify subsequent requests from the same client.
However, it's hard to track client-specific information like screen resolution and plugin support since the server has no way to detect details like such.
Add this line to your application's Gemfile:
gem 'rakwik'
And then execute:
$ bundle
Or install it yourself as:
$ gem install rakwik
Rakwik comes as a Rack-compatible middleware which needs to be added to your application's middleware stack on startup.
config.middleware.use Rakwik::Tracker,
:piwik_url => 'http://your.piwik.host/piwik.php',
:site_id => 'your_site_id', # eg. 1
:token_auth => 'yoursecrettoken'
The :token_auth
is needed since Rakwik will tell Piwik to record hits from another IP
than its own. The token_auth must be either the Super User token_auth, or a user with
"admin" permission for this website ID.
Piwik allows to set a custom action name which will be used in reports instead of the original URL. To use it from your Rails application, include it into your controller like such:
require 'rakwik/helpers'
class ApplicationController < ActionController::Base
# ...
include Rakwik::Helpers
end
In the particular controller activate it by using the action_name
class method:
class BooksController < ApplicationController
action_name :page_title
# GET /books
# GET /books.xml
def index
@books = Book.all
@page_title = "Books"
respond_with @books
end
end
Currently, action_name
points to a instance variable.
Since version 0.4.0 Rakwik detects Warden based credentials, eg. from Devise. It'll create a MD5 hash of the current user instance to reliably identify subsequent requests of the same user.
Handle tracking cookiesno way to do this asynchronously- Implement a helper to set the action title
from the controlleror view - Implement a way to provide custom variables from the controller or view
- Implement a way to detect client capabilities without a separate request
Detect Warden based credentials, eg. from DeviseTrack 404 responsesImplement meaningful specs
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Added some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request