meta_events 1.0.1 → 1.0.2
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/README.md +5 -0
- data/lib/meta_events/tracker.rb +1 -0
- data/lib/meta_events/version.rb +1 -1
- data/spec/meta_events/tracker_spec.rb +42 -2
- metadata +67 -88
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
|
4
|
-
|
5
|
-
SHA512:
|
6
|
-
|
7
|
-
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
data.tar.gz: 463ed55b0baf280ad2558b526c2d06cd78dc5ef8
|
4
|
+
metadata.gz: 4883769055fc1db0206a278ba5dc382cb2c711e3
|
5
|
+
SHA512:
|
6
|
+
data.tar.gz: 9dbe5bd43bf131c893c5b799afe3838775018a7dbcb8d349214ca8c126adc78ac9befcd428cfe068d708ae146dde01b5b32e26de4605bfaadeb34a2baa33cc08
|
7
|
+
metadata.gz: cff9954c133137b9fa77cecec136029a0e39b76decbf17c7bc60f82189c8c67ebc8ccf0135c0faac8a4737c20a89f20feda4f4d45f74e55dbc8445b0af03735d
|
data/README.md
CHANGED
@@ -558,6 +558,11 @@ Patches are welcome. ;-)
|
|
558
558
|
|
559
559
|
### Times
|
560
560
|
|
561
|
+
MetaEvents automatically adds a `time` property to any event you fire via `#event!`; this is so that you can take the
|
562
|
+
set of properties in a receiver and make it asynchronous, and don't have to worry about getting the time right. You
|
563
|
+
can override this, however, by simply passing a `:time` property with your event; it will override any time we would
|
564
|
+
otherwise set. (You can even set `:time => nil` if you want to make sure no time is passed at all.)
|
565
|
+
|
561
566
|
MetaEvents correctly converts any `Time` object you pass into the correct String format for Mixpanel (_e.g._,
|
562
567
|
`2014-02-03T15:49:17`), converting it to UTC first. This should make your times much cleaner.
|
563
568
|
|
data/lib/meta_events/tracker.rb
CHANGED
@@ -343,6 +343,7 @@ module MetaEvents
|
|
343
343
|
# class.
|
344
344
|
def event!(category_name, event_name, additional_properties = { })
|
345
345
|
event_data = effective_properties(category_name, event_name, additional_properties)
|
346
|
+
event_data[:properties] = { 'time' => Time.now.to_i }.merge(event_data[:properties])
|
346
347
|
|
347
348
|
self.event_receivers.each do |receiver|
|
348
349
|
receiver.track(event_data[:distinct_id], event_data[:event_name], event_data[:properties])
|
data/lib/meta_events/version.rb
CHANGED
@@ -66,7 +66,20 @@ describe MetaEvents::Tracker do
|
|
66
66
|
next_event = calls.shift
|
67
67
|
expect(next_event[0]).to eq(expected_distinct_id)
|
68
68
|
expect(next_event[1]).to eq(event_name)
|
69
|
-
|
69
|
+
actual_properties = next_event[2]
|
70
|
+
|
71
|
+
filtered_actual_properties = actual_properties.dup
|
72
|
+
|
73
|
+
# handle automatic properties that we may not want to care about every time
|
74
|
+
%w{ip time}.each do |automatic_property_name|
|
75
|
+
if ! event_properties.has_key?(automatic_property_name)
|
76
|
+
filtered_actual_properties.delete(automatic_property_name)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
expect(filtered_actual_properties).to eq(event_properties)
|
81
|
+
|
82
|
+
actual_properties
|
70
83
|
end
|
71
84
|
|
72
85
|
def tep_object(props)
|
@@ -148,13 +161,40 @@ EOS
|
|
148
161
|
end
|
149
162
|
end
|
150
163
|
|
151
|
-
describe "#
|
164
|
+
describe "#event!" do
|
152
165
|
it "should allow firing a valid event" do
|
153
166
|
i = new_instance(@distinct_id, nil, :definitions => definition_set, :version => 1)
|
154
167
|
i.event!(:foo, :bar, { })
|
155
168
|
expect_event('xy1_foo_bar', { })
|
156
169
|
end
|
157
170
|
|
171
|
+
describe "time support" do
|
172
|
+
it "should add the time to the event" do
|
173
|
+
start_time = Time.now.to_i
|
174
|
+
i = new_instance(@distinct_id, nil, :definitions => definition_set, :version => 1)
|
175
|
+
i.event!(:foo, :bar, { })
|
176
|
+
end_time = Time.now.to_i
|
177
|
+
actual_properties = expect_event('xy1_foo_bar', { })
|
178
|
+
time = actual_properties['time']
|
179
|
+
expect(time).to be >= start_time
|
180
|
+
expect(time).to be >= end_time
|
181
|
+
end
|
182
|
+
|
183
|
+
it "should allow overriding the time" do
|
184
|
+
actual_time = Time.now.to_i - 500
|
185
|
+
i = new_instance(@distinct_id, nil, :definitions => definition_set, :version => 1)
|
186
|
+
i.event!(:foo, :bar, { :time => actual_time })
|
187
|
+
expect_event('xy1_foo_bar', { 'time' => actual_time })
|
188
|
+
end
|
189
|
+
|
190
|
+
it "should allow omitting the time" do
|
191
|
+
actual_time = Time.now.to_i - 500
|
192
|
+
i = new_instance(@distinct_id, nil, :definitions => definition_set, :version => 1)
|
193
|
+
i.event!(:foo, :bar, { :time => nil })
|
194
|
+
expect_event('xy1_foo_bar', { 'time' => nil })
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
158
198
|
describe "ip-address passing" do
|
159
199
|
it "should pass through an IPv4 String IP" do
|
160
200
|
i = new_instance(@distinct_id, "138.93.206.193", :definitions => definition_set, :version => 1)
|
metadata
CHANGED
@@ -1,98 +1,80 @@
|
|
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.2
|
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
|
-
|
11
|
+
|
12
|
+
date: 2014-02-18 00:00:00 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
14
15
|
name: json
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ~>
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '1.0'
|
20
|
-
type: :runtime
|
21
16
|
prerelease: false
|
22
|
-
|
23
|
-
requirements:
|
17
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
24
19
|
- - ~>
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version:
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: activesupport
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - '>='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '3.0'
|
34
|
-
- - <=
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: 4.99.99
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: "1.0"
|
37
22
|
type: :runtime
|
23
|
+
version_requirements: *id001
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: activesupport
|
38
26
|
prerelease: false
|
39
|
-
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version:
|
44
|
-
- -
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 4.
|
47
|
-
|
27
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: "3.0"
|
32
|
+
- - <
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: "4.0"
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id002
|
37
|
+
- !ruby/object:Gem::Dependency
|
48
38
|
name: bundler
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
50
|
-
requirements:
|
51
|
-
- - ~>
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '1.5'
|
54
|
-
type: :development
|
55
39
|
prerelease: false
|
56
|
-
|
57
|
-
requirements:
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
41
|
+
requirements:
|
58
42
|
- - ~>
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version:
|
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'
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: "1.5"
|
68
45
|
type: :development
|
46
|
+
version_requirements: *id003
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rake
|
69
49
|
prerelease: false
|
70
|
-
|
71
|
-
requirements:
|
72
|
-
-
|
73
|
-
-
|
74
|
-
|
75
|
-
|
76
|
-
name: rspec
|
77
|
-
requirement: !ruby/object:Gem::Requirement
|
78
|
-
requirements:
|
79
|
-
- - ~>
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version: '2.14'
|
50
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- &id006
|
53
|
+
- ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: "0"
|
82
56
|
type: :development
|
57
|
+
version_requirements: *id004
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: rspec
|
83
60
|
prerelease: false
|
84
|
-
|
85
|
-
requirements:
|
61
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
86
63
|
- - ~>
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
version:
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: "2.14"
|
66
|
+
type: :development
|
67
|
+
version_requirements: *id005
|
89
68
|
description:
|
90
|
-
email:
|
69
|
+
email:
|
91
70
|
- ageweke@swiftype.com
|
92
71
|
executables: []
|
72
|
+
|
93
73
|
extensions: []
|
74
|
+
|
94
75
|
extra_rdoc_files: []
|
95
|
-
|
76
|
+
|
77
|
+
files:
|
96
78
|
- .gitignore
|
97
79
|
- .travis.yml
|
98
80
|
- Gemfile
|
@@ -120,35 +102,32 @@ files:
|
|
120
102
|
- spec/meta_events/tracker_spec.rb
|
121
103
|
- vendor/assets/javascripts/meta_events.js.erb
|
122
104
|
homepage: http://www.github.com/swiftype/meta_events
|
123
|
-
licenses:
|
105
|
+
licenses:
|
124
106
|
- MIT
|
125
107
|
metadata: {}
|
108
|
+
|
126
109
|
post_install_message:
|
127
110
|
rdoc_options: []
|
128
|
-
|
111
|
+
|
112
|
+
require_paths:
|
129
113
|
- lib
|
130
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
131
|
-
requirements:
|
132
|
-
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
requirements:
|
137
|
-
- - '>='
|
138
|
-
- !ruby/object:Gem::Version
|
139
|
-
version: '0'
|
114
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- *id006
|
117
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- *id006
|
140
120
|
requirements: []
|
121
|
+
|
141
122
|
rubyforge_project:
|
142
|
-
rubygems_version: 2.
|
123
|
+
rubygems_version: 2.0.14
|
143
124
|
signing_key:
|
144
125
|
specification_version: 4
|
145
|
-
summary: Structured, documented, powerful event emitting library for Mixpanel and
|
146
|
-
|
147
|
-
test_files:
|
126
|
+
summary: Structured, documented, powerful event emitting library for Mixpanel and other such systems.
|
127
|
+
test_files:
|
148
128
|
- spec/meta_events/controller_methods_and_helpers_spec.rb
|
149
129
|
- spec/meta_events/definition/category_spec.rb
|
150
130
|
- spec/meta_events/definition/definition_set_spec.rb
|
151
131
|
- spec/meta_events/definition/event_spec.rb
|
152
132
|
- spec/meta_events/definition/version_spec.rb
|
153
133
|
- spec/meta_events/tracker_spec.rb
|
154
|
-
has_rdoc:
|