meta_events 1.0.2 → 1.0.3
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.
- checksums.yaml +7 -7
- data/CHANGES.md +7 -0
- data/LICENSE.txt +1 -1
- data/README.md +12 -10
- data/lib/meta_events/test_receiver.rb +1 -1
- data/lib/meta_events/version.rb +1 -1
- metadata +92 -71
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
|
4
|
-
|
5
|
-
SHA512:
|
6
|
-
|
7
|
-
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b0e91bff1639de3f7c06814202408e65284d049e
|
4
|
+
data.tar.gz: 44e8e53c21fef0ed5d59264359e695f8f63735a9
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 347f0e4b5bb972dc9eb0ea40f636edc5a73c6f956def29db094beeb3c906d9bc88e58557163a40f114946e755f47e36d901d65ed9ec2ed02a5aa196fe0eb2003
|
7
|
+
data.tar.gz: 4afaffbe07364ff7f2c8601108c5e440dd0dccd69c5d46233671a076710b1d4998e44055beba7525b1a05ccad05352aec231b29458a4751cb6acd66b521e66ab
|
data/CHANGES.md
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
# `meta_events` Changelog
|
2
|
+
|
3
|
+
## 1.0.3,
|
4
|
+
|
5
|
+
* Fixed an issue where the `TestReceiver`'s `Rails.logger` reference could happen before `Rails.logger` was actually loaded, causing an exception. (Thanks to [Jesse Rusak](https://github.com/jder)!)
|
6
|
+
* Fixed a minor documentation bug (Thanks to [Jesse Rusak](https://github.com/jder)!)
|
7
|
+
* Added Changelog.
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -11,6 +11,8 @@ particularly dependent on exact Ruby versions, and should be compatible with a b
|
|
11
11
|
|
12
12
|
Current build status: 
|
13
13
|
|
14
|
+
Brought to you by the folks at [Swiftype](https://www.swiftype.com/). First version written by [Andrew Geweke](https://www.github.com/ageweke).
|
15
|
+
|
14
16
|
### Background
|
15
17
|
|
16
18
|
Sending user-centric events to (_e.g._) Mixpanel is far from difficult; it's a single method call. However, in a
|
@@ -90,8 +92,8 @@ uses this for doing geolocation of users:
|
|
90
92
|
|
91
93
|
class ApplicationController < ActionController::Base
|
92
94
|
...
|
93
|
-
def
|
94
|
-
@
|
95
|
+
def meta_events_tracker
|
96
|
+
@meta_events_tracker ||= MetaEvents::Tracker.new(current_user.try(:id), request.remote_ip)
|
95
97
|
end
|
96
98
|
...
|
97
99
|
end
|
@@ -102,7 +104,7 @@ Now, from the controller, we can fire an event and pass a couple of properties:
|
|
102
104
|
...
|
103
105
|
def create
|
104
106
|
...
|
105
|
-
|
107
|
+
meta_events_tracker.event!(:user, :signed_up, { :user_gender => @new_user.gender, :user_age => @new_user.age })
|
106
108
|
...
|
107
109
|
end
|
108
110
|
...
|
@@ -114,7 +116,7 @@ _event receivers_.
|
|
114
116
|
### Hooking Up Mixpanel and a Test Receiver
|
115
117
|
|
116
118
|
An _event receiver_ is any object that responds to a method `#track(distinct_id, event_name, event_properties)`, where
|
117
|
-
`distinct_id` is the distinct ID of the user, `event_name` is a `String` and `
|
119
|
+
`distinct_id` is the distinct ID of the user, `event_name` is a `String` and `event_properties` is a Hash mapping `String`
|
118
120
|
property names to simple scalar values — `true`, `false`, `nil`, numbers (all `Numeric`s, including both
|
119
121
|
integers and floating-point numbers, are supported), `String`s (and `Symbol`s will be converted to `String`s
|
120
122
|
transparently), and `Time` objects.
|
@@ -372,7 +374,7 @@ You could add these to every single call to `#event!`, but MetaEvents has a bett
|
|
372
374
|
|
373
375
|
class ApplicationController < ActionController::Base
|
374
376
|
...
|
375
|
-
def
|
377
|
+
def meta_events_tracker
|
376
378
|
implicit_properties = { }
|
377
379
|
if current_user
|
378
380
|
implicit_properties.merge!(
|
@@ -380,8 +382,8 @@ You could add these to every single call to `#event!`, but MetaEvents has a bett
|
|
380
382
|
:user_age => current_user.age
|
381
383
|
)
|
382
384
|
end
|
383
|
-
@
|
384
|
-
|
385
|
+
@meta_events_tracker ||= MetaEvents::Tracker.new(current_user.try(:id), request.remote_ip,
|
386
|
+
:implicit_properties => implicit_properties)
|
385
387
|
end
|
386
388
|
...
|
387
389
|
end
|
@@ -398,7 +400,7 @@ properties that are defined on it. For example, imagine we have an event trigger
|
|
398
400
|
another user. We have at least three entities: the 'from' user, the 'to' user, and the message itself. If we really
|
399
401
|
want to instrument this event properly, we're going to want something like this:
|
400
402
|
|
401
|
-
|
403
|
+
meta_events_tracker.event!(:user, :sent_message, {
|
402
404
|
:from_user_country => from_user.country,
|
403
405
|
:from_user_state => from_user.state,
|
404
406
|
:from_user_postcode => from_user.postcode,
|
@@ -462,7 +464,7 @@ automatically expanded and their names prefixed by the outer hash key. So let's
|
|
462
464
|
|
463
465
|
Now, we can pass the exact same set of properties as the above example, by simply doing:
|
464
466
|
|
465
|
-
|
467
|
+
meta_events_tracker.event!(:user, :sent_message, {
|
466
468
|
:from_user => from_user.to_event_properties,
|
467
469
|
:to_user => to_user.to_event_properties,
|
468
470
|
:message => message.to_event_properties
|
@@ -476,7 +478,7 @@ And — tah-dah! — MetaEvents supports this syntax automatically. If y
|
|
476
478
|
that object defines a method called `#to_event_properties`, then it will be called automatically, and replaced.
|
477
479
|
Our code now looks like:
|
478
480
|
|
479
|
-
|
481
|
+
meta_events_tracker.event!(:user, :sent_message, { :from_user => from_user, :to_user => to_user, :message => message })
|
480
482
|
|
481
483
|
### How to Take the Most Advantage
|
482
484
|
|
@@ -9,7 +9,7 @@ module MetaEvents
|
|
9
9
|
# This object is useful for watching and debugging events in development environments.
|
10
10
|
class TestReceiver
|
11
11
|
def initialize(target = nil, &block)
|
12
|
-
@target = target || block || ::Rails.logger
|
12
|
+
@target = target || block || lambda { |string| ::Rails.logger.info(string) }
|
13
13
|
end
|
14
14
|
|
15
15
|
def track(distinct_id, event_name, properties)
|
data/lib/meta_events/version.rb
CHANGED
metadata
CHANGED
@@ -1,82 +1,101 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: meta_events
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.3
|
5
5
|
platform: ruby
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- Andrew Geweke
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2014-03-24 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
15
14
|
name: json
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
version: "1.0"
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
22
20
|
type: :runtime
|
23
|
-
version_requirements: *id001
|
24
|
-
- !ruby/object:Gem::Dependency
|
25
|
-
name: activesupport
|
26
21
|
prerelease: false
|
27
|
-
|
28
|
-
requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
29
31
|
- - ">="
|
30
|
-
- !ruby/object:Gem::Version
|
31
|
-
version:
|
32
|
-
- -
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version:
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.0'
|
34
|
+
- - "<="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: 4.99.99
|
35
37
|
type: :runtime
|
36
|
-
version_requirements: *id002
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: bundler
|
39
38
|
prerelease: false
|
40
|
-
|
41
|
-
requirements:
|
42
|
-
- -
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
version:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '3.0'
|
44
|
+
- - "<="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 4.99.99
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: bundler
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '1.5'
|
45
54
|
type: :development
|
46
|
-
version_requirements: *id003
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: rake
|
49
55
|
prerelease: false
|
50
|
-
|
51
|
-
requirements:
|
52
|
-
-
|
53
|
-
-
|
54
|
-
|
55
|
-
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '1.5'
|
61
|
+
- !ruby/object:Gem::Dependency
|
62
|
+
name: rake
|
63
|
+
requirement: !ruby/object:Gem::Requirement
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
56
68
|
type: :development
|
57
|
-
version_requirements: *id004
|
58
|
-
- !ruby/object:Gem::Dependency
|
59
|
-
name: rspec
|
60
69
|
prerelease: false
|
61
|
-
|
62
|
-
requirements:
|
63
|
-
- -
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
version:
|
70
|
+
version_requirements: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: rspec
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - "~>"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '2.14'
|
66
82
|
type: :development
|
67
|
-
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '2.14'
|
68
89
|
description:
|
69
|
-
email:
|
90
|
+
email:
|
70
91
|
- ageweke@swiftype.com
|
71
92
|
executables: []
|
72
|
-
|
73
93
|
extensions: []
|
74
|
-
|
75
94
|
extra_rdoc_files: []
|
76
|
-
|
77
|
-
|
78
|
-
- .
|
79
|
-
- .
|
95
|
+
files:
|
96
|
+
- ".gitignore"
|
97
|
+
- ".travis.yml"
|
98
|
+
- CHANGES.md
|
80
99
|
- Gemfile
|
81
100
|
- LICENSE.txt
|
82
101
|
- README.md
|
@@ -102,29 +121,31 @@ files:
|
|
102
121
|
- spec/meta_events/tracker_spec.rb
|
103
122
|
- vendor/assets/javascripts/meta_events.js.erb
|
104
123
|
homepage: http://www.github.com/swiftype/meta_events
|
105
|
-
licenses:
|
124
|
+
licenses:
|
106
125
|
- MIT
|
107
126
|
metadata: {}
|
108
|
-
|
109
127
|
post_install_message:
|
110
128
|
rdoc_options: []
|
111
|
-
|
112
|
-
require_paths:
|
129
|
+
require_paths:
|
113
130
|
- lib
|
114
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
115
|
-
requirements:
|
116
|
-
-
|
117
|
-
|
118
|
-
|
119
|
-
|
131
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - ">="
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
136
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - ">="
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0'
|
120
141
|
requirements: []
|
121
|
-
|
122
142
|
rubyforge_project:
|
123
|
-
rubygems_version: 2.
|
143
|
+
rubygems_version: 2.2.1
|
124
144
|
signing_key:
|
125
145
|
specification_version: 4
|
126
|
-
summary: Structured, documented, powerful event emitting library for Mixpanel and
|
127
|
-
|
146
|
+
summary: Structured, documented, powerful event emitting library for Mixpanel and
|
147
|
+
other such systems.
|
148
|
+
test_files:
|
128
149
|
- spec/meta_events/controller_methods_and_helpers_spec.rb
|
129
150
|
- spec/meta_events/definition/category_spec.rb
|
130
151
|
- spec/meta_events/definition/definition_set_spec.rb
|