mixpanelable 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18,6 +18,13 @@ module Mixpanelable
|
|
18
18
|
Thread.current[:mixpanelable_user_agent] = nil
|
19
19
|
end
|
20
20
|
|
21
|
+
def set_mixpanelable_request_uuid
|
22
|
+
Thread.current[:mixpanelable_request_uuid] = SecureRandom.uuid
|
23
|
+
yield
|
24
|
+
ensure
|
25
|
+
Thread.current[:mixpanelable_request_uuid] = nil
|
26
|
+
end
|
27
|
+
|
21
28
|
def set_mixpanelable_guest_uuid
|
22
29
|
Thread.current[:mixpanelable_guest_uuid] = mixpanelable_guest_uuid
|
23
30
|
yield
|
@@ -1,11 +1,12 @@
|
|
1
1
|
module Mixpanelable
|
2
2
|
class EventBuilder
|
3
|
-
attr_reader :active_record, :name, :properties
|
3
|
+
attr_reader :active_record, :name, :properties, :unique_to_request
|
4
4
|
|
5
5
|
def initialize(args = {})
|
6
6
|
@active_record = args[:active_record]
|
7
7
|
@name = args[:name]
|
8
8
|
@properties = args[:properties]
|
9
|
+
@unique_to_request = args[:unique_to_request]
|
9
10
|
self
|
10
11
|
end
|
11
12
|
|
@@ -17,6 +18,8 @@ module Mixpanelable
|
|
17
18
|
case
|
18
19
|
when active_record.present?
|
19
20
|
distinct_id_for(active_record)
|
21
|
+
when unique_to_request
|
22
|
+
request_uuid
|
20
23
|
when current_user.present?
|
21
24
|
distinct_id_for(current_user)
|
22
25
|
else
|
@@ -40,6 +43,10 @@ module Mixpanelable
|
|
40
43
|
Thread.current[:mixpanelable_guest_uuid]
|
41
44
|
end
|
42
45
|
|
46
|
+
def request_uuid
|
47
|
+
Thread.current[:mixpanelable_request_uuid]
|
48
|
+
end
|
49
|
+
|
43
50
|
def token
|
44
51
|
Config.token
|
45
52
|
end
|
@@ -17,6 +17,13 @@ module Mixpanelable
|
|
17
17
|
Mixpanelable::Config.adapter.send_event(event)
|
18
18
|
end
|
19
19
|
|
20
|
+
def track_event_for_request(name, properties = {})
|
21
|
+
return if user_agent_is_bot?
|
22
|
+
|
23
|
+
event = EventBuilder.new(unique_to_request: true, name: name, properties: properties).event
|
24
|
+
Mixpanelable::Config.adapter.send_event(event)
|
25
|
+
end
|
26
|
+
|
20
27
|
def user_agent_is_bot?
|
21
28
|
Mixpanelable::Bots.bot?(user_agent)
|
22
29
|
end
|
@@ -33,6 +40,10 @@ module Mixpanelable
|
|
33
40
|
def track_event_for(active_record, name, properties = {})
|
34
41
|
self.class.track_event_for(active_record, name, properties)
|
35
42
|
end
|
43
|
+
|
44
|
+
def track_event_for_request(name, properties = {})
|
45
|
+
self.class.track_event_for_request(name, properties)
|
46
|
+
end
|
36
47
|
end
|
37
48
|
end
|
38
49
|
|
data/lib/mixpanelable.rb
CHANGED
@@ -14,5 +14,6 @@ if defined?(ActionController) and defined?(ActionController::Base)
|
|
14
14
|
around_filter :set_mixpanelable_current_user
|
15
15
|
around_filter :set_mixpanelable_guest_uuid
|
16
16
|
around_filter :set_mixpanelable_user_agent
|
17
|
+
around_filter :set_mixpanelable_request_uuid
|
17
18
|
end
|
18
19
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mixpanelable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-11-28 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: resque
|
16
|
-
requirement: &
|
16
|
+
requirement: &70285085373300 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70285085373300
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rails
|
27
|
-
requirement: &
|
27
|
+
requirement: &70285085372800 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70285085372800
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rspec
|
38
|
-
requirement: &
|
38
|
+
requirement: &70285085372280 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70285085372280
|
47
47
|
description:
|
48
48
|
email: matt@developertown.com
|
49
49
|
executables: []
|