Module: UserTrackers
- Defined in:
- lib/user_trackers.rb,
lib/user_trackers/configuration.rb,
lib/user_trackers/slack_tracker.rb,
lib/user_trackers/intercom_tracker.rb,
lib/user_trackers/mixpanel_tracker.rb,
lib/user_trackers/workers/resque_worker.rb,
lib/user_trackers/workers/sidekiq_worker.rb,
lib/generators/user_trackers/install_generator.rb
Defined Under Namespace
Modules: Configuration, IntercomTracker, MixpanelTracker, SlackTracker
Classes: InstallGenerator, RescueWorker, SidekiqWorker
Constant Summary
collapse
- TRACKERS =
['mixpanel','intercom','slack']
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.options ⇒ Object
Returns the value of attribute options.
17
18
19
|
# File 'lib/user_trackers.rb', line 17
def options
@options
end
|
Class Method Details
._track(params) ⇒ Object
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# 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) ⇒ Boolean
29
30
31
32
|
# 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) ⇒ Object
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# 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
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 ⇒ Object
21
22
23
|
# File 'lib/user_trackers.rb', line 21
def self.trackers
TRACKERS
end
|