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.1.1
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: &70350868829560 !ruby/object:Gem::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: *70350868829560
24
+ version_requirements: *70285085373300
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rails
27
- requirement: &70350868829080 !ruby/object:Gem::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: *70350868829080
35
+ version_requirements: *70285085372800
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rspec
38
- requirement: &70350868828540 !ruby/object:Gem::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: *70350868828540
46
+ version_requirements: *70285085372280
47
47
  description:
48
48
  email: matt@developertown.com
49
49
  executables: []