module UserTrackers

Constants

TRACKERS

Attributes

options[RW]

Public Class Methods

_track(params) click to toggle source
# File lib/user_trackers.rb, line 34
def self._track(params)
  if !ignore_event? params['event_name']
    if !options[Rails.env.to_sym][:db] || !ignore_event?(params['event_name'], :db)
      UserEvent.create(
        anonymous_id: params['anonymous_id'],
        event_name:'logged_in_as', 
        event_attributes:{ user_id: params['user_id'] }
      )  if params['user_logged_in']
      UserEvent.create(params.except('user_logged_in')) 
    end
    trackers.each do |tracker|
      if options[Rails.env.to_sym][tracker.to_sym]
        if !ignore_event?(params['event_name'], tracker.to_sym)
          eval("#{tracker.capitalize}Tracker.track(params)")
        end
      end
    end
  end
end
ignore_event?(event_name, tracker = nil) click to toggle source
# File lib/user_trackers.rb, line 29
def self.ignore_event?(event_name, tracker = nil)
  ignore_events = tracker ? options[Rails.env.to_sym][tracker][:ignore_events] || [] : options[Rails.env.to_sym][:ignore_events] || []
  ignore_events.include?(event_name) || ignore_events.include?('*')
end
track(params, session = nil) click to toggle source
# File lib/user_trackers.rb, line 54
def self.track(params, session = nil)
  if session
    if params[:user_id] && session['anonymous_id']
      params[:user_logged_in] = true
      params[:anonymous_id] = session['anonymous_id']
      session.delete('anonymous_id')
    elsif !params[:user_id]
      session['anonymous_id'] ||= UUID.new.generate
      params[:anonymous_id] = session['anonymous_id']
    end
  end
  params[:anonymous_id] ||= UUID.new.generate

  # for usage with sidekiq and resque
  params = params.as_json

  if options[Rails.env.to_sym][:queue_adapter] == 'sidekiq'
    SidekiqWorker.perform_async(params) 
  elsif options[Rails.env.to_sym][:queue_adapter] == 'resque'
    Resque.enqueue(RescueWorker, params)
  else 
    _track(params)
  end
end
trackers() click to toggle source
# File lib/user_trackers.rb, line 21
def self.trackers
  TRACKERS
end