forked from kylewelsby/discourse-segment-io-plugin
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathplugin.rb
More file actions
73 lines (64 loc) · 3.13 KB
/
Copy pathplugin.rb
File metadata and controls
73 lines (64 loc) · 3.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# name: Segment.io
# about: Import your Discourse data to your Segment.io warehouse
# version: 0.1
# authors: Kyle Welsby <kyle@mekyle.com>, Joe Buhlig <hello@joebuhlig.com>
# url: https://github.com/civicmakers/discourse-segment-io-plugin
gem 'commander', '4.4.0' # , require: false # for analytics-ruby
gem 'analytics-ruby', '2.2.2', require: false # 'segment/analytics'
after_initialize do
load File.expand_path('../jobs/segment_after_create_bookmark.rb', __FILE__)
load File.expand_path('../jobs/segment_after_create_post.rb', __FILE__)
load File.expand_path('../jobs/segment_after_create_topic.rb', __FILE__)
load File.expand_path('../jobs/segment_after_create_user.rb', __FILE__)
load File.expand_path('../jobs/segment_after_destroy_bookmark.rb', __FILE__)
load File.expand_path('../jobs/segment_after_edit_post.rb', __FILE__)
load File.expand_path('../jobs/segment_after_edit_topic.rb', __FILE__)
load File.expand_path('../jobs/segment_after_like_post.rb', __FILE__)
load File.expand_path('../jobs/segment_after_unlike_post.rb', __FILE__)
load File.expand_path('../jobs/segment_pageviews.rb', __FILE__)
load File.expand_path('../jobs/segment_share_dialog.rb', __FILE__)
load File.expand_path('../jobs/segment_user_badge_granted.rb', __FILE__)
load File.expand_path('../jobs/segment_user_badge_removed.rb', __FILE__)
load File.expand_path('../jobs/segment_user_logged_out.rb', __FILE__)
load File.expand_path('../jobs/segment_user_seen.rb', __FILE__)
require_dependency 'application_controller'
class ::ApplicationController
before_action :emit_segment_user_tracker
def emit_segment_user_tracker
if current_user && !segment_common_controller_actions?
Jobs.enqueue(:segment_pageviews, {
user_id: current_user.id,
controller: controller_name,
action: action_name,
original_url: request.referrer,
ip: request.ip,
user_agent: request.user_agent,
params: params
})
end
end
def segment_common_controller_actions?
controller_name == 'stylesheets' || controller_name == 'user_avatars' || (controller_name == 'about' && action_name == 'live_post_counts') || action_name == 'timings' || action_name == 'destroy'
end
end
require_dependency 'user_action'
class ::UserAction
after_create :segment_after_create_user_action
after_destroy :segment_after_destroy_user_action
def segment_after_create_user_action
if self.action_type == 1
Jobs.enqueue(:segment_after_like_post, {post_id: self.target_post.id, user_id: self.user.id })
elsif self.action_type == 3
Jobs.enqueue(:segment_after_create_bookmark, {post_id: self.target_post.id, user_id: self.user.id })
end
end
def segment_after_destroy_user_action
if self.action_type == 1
Jobs.enqueue(:segment_after_unlike_post, {post_id: self.target_post.id, user_id: self.user.id })
elsif self.action_type == 3
Jobs.enqueue(:segment_after_destroy_bookmark, {post_id: self.target_post.id, user_id: self.user.id })
end
end
end
load File.expand_path('../lib/discourse_segment/engine.rb', __FILE__)
end