Git Product home page Git Product logo

referer_tracking's Introduction

RefererTracking

Referer tracking automates better tracking in your Rails app. It tells you who creates activerecord objects / models, where did they originally come from, what url did they use etc. It does it by saving referrer url to session and saving information about the request when creating new item. It enables you to optimize your web-app user interface and flow.

Http referer_url and first_url are saved to session in controller before_filter. When creating a new model these values are saved to referer_trackings table. Also current request url and current request referer are saved.

You can query how specific objects were made by querying following. It will let you know how did the user end up in your page and where did he create the object.

  RefererTracking::RefererTracking.where(:trackable_type => 'class_name').collect{|rt| [rt.first_url, rt.referer_url, rt.current_request_referer_url]}

Monitored items

- session_referer_url - where did the user originally come from - saved in session
- session_first_url - what was the first url for this session - saved in session
- cookie_referer_url - where did the user originally come from - saved in persistent cookie
- cookie_first_url - where did the user originally come from - saved in persistent cookie
- cookie_time - at what time did the user originally come - saved in persistent cookie
- current_request_url - when creating the item
- current_request_referer_url - when creating the item, where did the request originate
- infos_session, infos_request - extra info you add by referer_tracking_add_info etc, see below
- user_agent, ip, session_id
- cookies_yaml - saves cookies if enabled in initializers with RefererTracking.save_cookies = true
               - handy for parsing information related to google analytics, e.g. number of visits

Install

in /gemfile
  gem 'referer_tracking'

# Run following
# bundle
# bundle exec rake railties:install:migrations FROM=referer_tracking
# rake db:migrate

Configure


ApplicationController
  include RefererTracking::ControllerAddons
end

OtherController
  # This monitors saved items and creates RefererTracking items in db, enable in controllers you want it to be used
  cache_sweeper RefererTracking::Sweeper
end

/config/initializers/referer_tracking.rb
  # Referer tracking is enabled for these models
  RefererTracking.add_tracking_to(User)
  # RefererTracking.add_tracking_to(User, Messages) # for multiple models

  RefererTracking.save_cookies = true # saves all cookies to db
  RefererTracking.set_referer_cookies = true # saves referer and first url data to cookie
                   # You should use it unless you are very performance minded : http://yuiblog.com/blog/2007/03/01/performance-research-part-3/

Extras

You can add own info to referer_tracking table giving in your controller the value to referer_tracking.

UserController
  # Example of adding info to referer_tracking, remember to create migration to add column first
  before_filter do |controller|
    # adds to session, so saved to later requests
    referer_tracking_add_info('referer_id', session[:referer_id])

    # adds only to this requests, ignored later
    referer_tracking_request_set_info('referer_id', session[:referer_id])
  end

end

Helpers include

  • referer_tracking_first_request?
  • referer_tracking_add_info(key, value) # only set in the first time called - saved in session
  • referer_tracking_set_info(key, value) # change value always - saved in session
  • referer_tracking_get_key(key)
  • referer_tracking_request_set_info
  • referer_tracking_request_add_infos # hash of current request infos

Inside

RefererTracking::ControllerAddons creates before_filter that saves referer_information to session. Direct access is not recommended but possible with session[:referer_tracking]. Information is not saved for known bots.

Requirements

Gem has been tested with ruby 1.9.3, ruby 2.1 and Rails 3.1.

Other possible gems

Support

Submit suggestions or feature requests as a GitHub Issue or Pull Request. Remember to update tests. Tests are quite extensive.

Licence

This project rocks and uses MIT-LICENSE. (http://www.opensource.org/licenses/mit-license.php)

referer_tracking's People

Contributors

holli avatar nles avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.