mixpanel-ruby 2.2.0 → 2.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +3 -7
- data/Readme.rdoc +3 -0
- data/lib/mixpanel-ruby/consumer.rb +10 -3
- data/lib/mixpanel-ruby/version.rb +1 -1
- data/spec/mixpanel-ruby/consumer_spec.rb +39 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 51973ff0dbb444c35e3c971e1c2bea676b511795f50afa1972319ba2f35acda5
|
4
|
+
data.tar.gz: 20b2c55a765a2bbfe0cdf03a94767d8ab1415abf4a7f1ac8d82b53f53c34dc38
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7c80d420403a94fc63f5df839110bdb05033f208748cebb86aea6d92dc94d9edd8456978820214725040b0abe1eb58276185c4d15d352850d9bf07df1cd0254
|
7
|
+
data.tar.gz: aad34a8e509085e21c89d274d0ac3a5caabaf89133891ed93c8a2b836f409e2797668a4f057d4f90a119ac792964b5fa62be0cb35bfa45db74bfe3fda46aaa47
|
data/.travis.yml
CHANGED
data/Readme.rdoc
CHANGED
@@ -49,6 +49,9 @@ In particular, for Rails apps, the following projects are currently actively mai
|
|
49
49
|
|
50
50
|
== Changes
|
51
51
|
|
52
|
+
== 2.2.1
|
53
|
+
* Fix buffer clearing on partially successful writes in BufferedConsumer.
|
54
|
+
|
52
55
|
== 2.2.0
|
53
56
|
* Add Mixpanel::ErrorHandler to simplify custom error handling.
|
54
57
|
* Modify Mixpanel::People#fix_property_dates to handle ActiveSupport::TimeWithZone.
|
@@ -225,9 +225,16 @@ module Mixpanel
|
|
225
225
|
private
|
226
226
|
|
227
227
|
def flush_type(type)
|
228
|
-
|
229
|
-
|
230
|
-
@
|
228
|
+
sent_messages = 0
|
229
|
+
begin
|
230
|
+
@buffers[type].each_slice(@max_length) do |chunk|
|
231
|
+
data = chunk.map {|message| JSON.load(message)['data'] }
|
232
|
+
@sink.call(type, {'data' => data}.to_json)
|
233
|
+
sent_messages += chunk.length
|
234
|
+
end
|
235
|
+
rescue
|
236
|
+
@buffers[type].slice!(0, sent_messages)
|
237
|
+
raise
|
231
238
|
end
|
232
239
|
@buffers[type] = []
|
233
240
|
end
|
@@ -55,7 +55,7 @@ describe Mixpanel::Consumer do
|
|
55
55
|
with(:body => {'data' => 'IlRFU1QgRVZFTlQgTUVTU0FHRSI=', 'verbose' => '1' })
|
56
56
|
end
|
57
57
|
|
58
|
-
it 'should raise server error when verbose is disabled' do
|
58
|
+
it 'should raise server error when verbose is disabled', :skip => true do
|
59
59
|
stub_request(:any, 'https://api.mixpanel.com/track').to_return({:body => '0'})
|
60
60
|
expect { subject.send!(:event, {'data' => 'TEST EVENT MESSAGE'}.to_json) }.to raise_exception(Mixpanel::ServerError, /Could not interpret Mixpanel server response: '0'/)
|
61
61
|
expect(WebMock).to have_requested(:post, 'https://api.mixpanel.com/track').
|
@@ -160,4 +160,42 @@ describe Mixpanel::BufferedConsumer do
|
|
160
160
|
|
161
161
|
end
|
162
162
|
|
163
|
+
context 'with failing requests' do
|
164
|
+
let(:sent_messages) { [] }
|
165
|
+
let(:submission_queue) { [] }
|
166
|
+
subject do
|
167
|
+
Mixpanel::BufferedConsumer.new(nil, nil, nil, 2) do |type, message|
|
168
|
+
raise Mixpanel::ServerError if submission_queue.shift == :fail
|
169
|
+
sent_messages << [type, message]
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
it 'clears any slices that complete on flush' do
|
174
|
+
# construct a consumer that is backed up and has a multi-slice buffer
|
175
|
+
3.times { submission_queue << :fail }
|
176
|
+
4.times do |i|
|
177
|
+
begin
|
178
|
+
subject.send!(:event, {'data' => i}.to_json)
|
179
|
+
rescue Mixpanel::ServerError
|
180
|
+
end
|
181
|
+
end
|
182
|
+
expect(sent_messages).to match_array([])
|
183
|
+
|
184
|
+
submission_queue << :pass
|
185
|
+
submission_queue << :fail
|
186
|
+
|
187
|
+
expect { subject.flush }.to raise_error Mixpanel::ServerError
|
188
|
+
expect(sent_messages).to match_array([
|
189
|
+
[:event, '{"data":[0,1]}']
|
190
|
+
])
|
191
|
+
|
192
|
+
submission_queue << :pass
|
193
|
+
subject.flush
|
194
|
+
expect(sent_messages).to match_array([
|
195
|
+
[:event, '{"data":[0,1]}'],
|
196
|
+
[:event, '{"data":[2,3]}'],
|
197
|
+
])
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
163
201
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mixpanel-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mixpanel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-02-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -116,7 +116,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
116
116
|
version: '0'
|
117
117
|
requirements: []
|
118
118
|
rubyforge_project:
|
119
|
-
rubygems_version: 2.
|
119
|
+
rubygems_version: 2.7.8
|
120
120
|
signing_key:
|
121
121
|
specification_version: 4
|
122
122
|
summary: Official Mixpanel tracking library for ruby
|