vero 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES.md +5 -0
- data/Gemfile.lock +10 -10
- data/README.markdown +7 -6
- data/lib/vero/senders/thread.rb +18 -16
- data/lib/vero/version.rb +1 -1
- data/spec/lib/sender_spec.rb +0 -15
- data/spec/lib/trackable_spec.rb +24 -46
- data/spec/spec_helper.rb +2 -1
- data/spec/support/user_support.rb +11 -0
- data/vero.gemspec +1 -1
- metadata +7 -7
data/CHANGES.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -2,9 +2,9 @@ PATH
|
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
4
|
vero (0.6.0)
|
5
|
-
girl_friday (>= 0.11.2)
|
6
5
|
json
|
7
6
|
rest-client
|
7
|
+
sucker_punch (~> 1.0)
|
8
8
|
|
9
9
|
GEM
|
10
10
|
remote: http://rubygems.org/
|
@@ -38,7 +38,8 @@ GEM
|
|
38
38
|
multi_json (~> 1.0)
|
39
39
|
arel (3.0.2)
|
40
40
|
builder (3.0.4)
|
41
|
-
|
41
|
+
celluloid (0.15.2)
|
42
|
+
timers (~> 1.1.0)
|
42
43
|
delayed_job (3.0.5)
|
43
44
|
activesupport (~> 3.0)
|
44
45
|
delayed_job_active_record (0.4.4)
|
@@ -46,9 +47,6 @@ GEM
|
|
46
47
|
delayed_job (~> 3.0)
|
47
48
|
diff-lcs (1.2.4)
|
48
49
|
erubis (2.7.0)
|
49
|
-
girl_friday (0.11.2)
|
50
|
-
connection_pool (~> 1.0)
|
51
|
-
rubinius-actor
|
52
50
|
hike (1.2.2)
|
53
51
|
i18n (0.6.1)
|
54
52
|
journey (1.0.4)
|
@@ -61,6 +59,7 @@ GEM
|
|
61
59
|
mime-types (1.23)
|
62
60
|
mono_logger (1.0.1)
|
63
61
|
multi_json (1.7.2)
|
62
|
+
netrc (0.7.7)
|
64
63
|
polyglot (0.3.3)
|
65
64
|
rack (1.4.5)
|
66
65
|
rack-cache (1.2)
|
@@ -98,8 +97,9 @@ GEM
|
|
98
97
|
redis-namespace (~> 1.2)
|
99
98
|
sinatra (>= 0.9.2)
|
100
99
|
vegas (~> 0.1.2)
|
101
|
-
rest-client (1.
|
102
|
-
mime-types (>= 1.16)
|
100
|
+
rest-client (1.7.2)
|
101
|
+
mime-types (>= 1.16, < 3.0)
|
102
|
+
netrc (~> 0.7)
|
103
103
|
rspec (2.13.0)
|
104
104
|
rspec-core (~> 2.13.0)
|
105
105
|
rspec-expectations (~> 2.13.0)
|
@@ -108,9 +108,6 @@ GEM
|
|
108
108
|
rspec-expectations (2.13.0)
|
109
109
|
diff-lcs (>= 1.1.3, < 2.0)
|
110
110
|
rspec-mocks (2.13.1)
|
111
|
-
rubinius-actor (0.0.2)
|
112
|
-
rubinius-core-api
|
113
|
-
rubinius-core-api (0.0.1)
|
114
111
|
sinatra (1.3.6)
|
115
112
|
rack (~> 1.4)
|
116
113
|
rack-protection (~> 1.3)
|
@@ -120,8 +117,11 @@ GEM
|
|
120
117
|
multi_json (~> 1.0)
|
121
118
|
rack (~> 1.0)
|
122
119
|
tilt (~> 1.1, != 1.3.0)
|
120
|
+
sucker_punch (1.1)
|
121
|
+
celluloid (~> 0.15.2)
|
123
122
|
thor (0.18.1)
|
124
123
|
tilt (1.3.7)
|
124
|
+
timers (1.1.0)
|
125
125
|
treetop (1.4.12)
|
126
126
|
polyglot
|
127
127
|
polyglot (>= 0.3.1)
|
data/README.markdown
CHANGED
@@ -39,19 +39,20 @@ We recommend that you select one of the supported queue-based alternatives:
|
|
39
39
|
config.async = :delayed_job # DelayedJob
|
40
40
|
config.async = :resque # Resque (recommended)
|
41
41
|
|
42
|
-
**Note:** Background threads are not supported by Ruby 1.8.7 or earlier.
|
43
|
-
You must explicitly set `config.async` to either `:none`, `:delayed_job` or
|
44
|
-
`:resque`.
|
45
|
-
|
46
42
|
**Note:** If you're using Mongoid with DelayedJob, you must add
|
47
43
|
`gem "delayed_job_mongoid"` to your Gemfile.
|
48
44
|
|
49
|
-
|
45
|
+
vero will automatically choose whether to send requests to your
|
50
46
|
**development** or **live** environment if you are using Rails 3.x. You can
|
51
47
|
override this in your initializer:
|
52
48
|
|
53
49
|
config.development_mode = true # or false
|
54
50
|
|
51
|
+
Finally, if you wish to disable vero requests when running your automated tests,
|
52
|
+
add the following line to your initializer:
|
53
|
+
|
54
|
+
config.disabled = Rails.env.test?
|
55
|
+
|
55
56
|
## Setup tracking
|
56
57
|
|
57
58
|
You will need to define who should be tracked and what information about them
|
@@ -217,7 +218,7 @@ outlined in Installation. Now you can call the API using the following methods:
|
|
217
218
|
|
218
219
|
This gem is distributed under the MIT License.
|
219
220
|
|
220
|
-
Copyright (C)
|
221
|
+
Copyright (C) 2014 Vero (Invc Me Inc.)
|
221
222
|
|
222
223
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
223
224
|
this software and associated documentation files (the "Software"), to deal in
|
data/lib/vero/senders/thread.rb
CHANGED
@@ -1,26 +1,28 @@
|
|
1
1
|
require 'json'
|
2
|
-
require '
|
2
|
+
require 'sucker_punch'
|
3
3
|
|
4
4
|
module Vero
|
5
|
-
|
6
|
-
|
7
|
-
VERO_SENDER_QUEUE = ::GirlFriday::WorkQueue.new(:vero_queue, :size => 1) do |msg|
|
8
|
-
api_class = msg[:api_class]
|
9
|
-
domain = msg[:domain]
|
10
|
-
options = msg[:options]
|
5
|
+
class SuckerPunchWorker
|
6
|
+
include SuckerPunch::Job
|
11
7
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
8
|
+
def perform(api_class, domain, options)
|
9
|
+
new_options = {}
|
10
|
+
options.each { |k,v| new_options[k.to_sym] = v }
|
11
|
+
|
12
|
+
begin
|
13
|
+
api_class.new(domain, new_options).perform
|
14
|
+
Vero::App.log(self, "method: #{api_class.name}, options: #{options.to_json}, response: job performed")
|
15
|
+
rescue => e
|
16
|
+
Vero::App.log(self, "method: #{api_class.name}, options: #{options.to_json}, response: #{e.message}")
|
19
17
|
end
|
18
|
+
end
|
19
|
+
end
|
20
20
|
|
21
|
+
module Senders
|
22
|
+
class Thread
|
21
23
|
def call(api_class, domain, options)
|
22
|
-
|
24
|
+
Vero::SuckerPunchWorker.new.async.perform(api_class, domain, options)
|
23
25
|
end
|
24
26
|
end
|
25
27
|
end
|
26
|
-
end
|
28
|
+
end
|
data/lib/vero/version.rb
CHANGED
data/spec/lib/sender_spec.rb
CHANGED
@@ -8,21 +8,6 @@ describe Vero::Sender do
|
|
8
8
|
subject.senders.should be_a(Hash)
|
9
9
|
end
|
10
10
|
|
11
|
-
context 'when using Ruby 1.8' do
|
12
|
-
before do
|
13
|
-
stub_const('RUBY_VERSION', '1.8.7')
|
14
|
-
end
|
15
|
-
|
16
|
-
it "should have a default set of senders (true, false, none, thread)" do
|
17
|
-
subject.senders.should == {
|
18
|
-
true => Vero::Senders::Invalid,
|
19
|
-
false => Vero::Senders::Base,
|
20
|
-
:none => Vero::Senders::Base,
|
21
|
-
:thread => Vero::Senders::Invalid,
|
22
|
-
}
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
11
|
context 'when using Ruby with verion greater than 1.8.7' do
|
27
12
|
before do
|
28
13
|
stub_const('RUBY_VERSION', '1.9.3')
|
data/spec/lib/trackable_spec.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
def vero_context(user, logging = true, async = false)
|
3
|
+
def vero_context(user, logging = true, async = false, disabled = true)
|
4
4
|
context = Vero::Context.new(Vero::App.default_context)
|
5
5
|
context.subject = user
|
6
6
|
context.config.logging = logging
|
7
7
|
context.config.async = async
|
8
|
+
context.config.disabled = disabled
|
8
9
|
|
9
10
|
context
|
10
11
|
end
|
@@ -76,23 +77,17 @@ describe Vero::Trackable do
|
|
76
77
|
end
|
77
78
|
|
78
79
|
context 'when set to be async' do
|
79
|
-
before
|
80
|
-
|
81
|
-
|
82
|
-
before { stub_const('RUBY_VERSION', '1.8.7') }
|
83
|
-
|
84
|
-
it 'raises an error' do
|
85
|
-
expect { @user.track!(@request_params[:event_name], @request_params[:data]) }.to raise_error
|
86
|
-
expect { @user.track!(@request_params[:event_name]) }.to raise_error
|
87
|
-
end
|
80
|
+
before do
|
81
|
+
@context = vero_context(@user, true, true)
|
82
|
+
@user.stub(:with_vero_context).and_return(@context)
|
88
83
|
end
|
89
84
|
|
90
85
|
context 'not using Ruby 1.8.7' do
|
91
86
|
before { stub_const('RUBY_VERSION', '1.9.3') }
|
92
87
|
|
93
88
|
it 'sends' do
|
94
|
-
@user.track!(@request_params[:event_name], @request_params[:data]).should
|
95
|
-
@user.track!(@request_params[:event_name]).should
|
89
|
+
@user.track!(@request_params[:event_name], @request_params[:data]).should be_nil
|
90
|
+
@user.track!(@request_params[:event_name]).should be_nil
|
96
91
|
end
|
97
92
|
end
|
98
93
|
end
|
@@ -120,23 +115,15 @@ describe Vero::Trackable do
|
|
120
115
|
|
121
116
|
context 'when set to use async' do
|
122
117
|
before do
|
123
|
-
context = vero_context(@user, false, true)
|
124
|
-
@user.stub(:with_vero_context).and_return(context)
|
125
|
-
end
|
126
|
-
|
127
|
-
context 'and using Ruby 1.8.7' do
|
128
|
-
before { stub_const('RUBY_VERSION', '1.8.7') }
|
129
|
-
|
130
|
-
it 'raises an error' do
|
131
|
-
expect { @user.identify! }.to raise_error
|
132
|
-
end
|
118
|
+
@context = vero_context(@user, false, true)
|
119
|
+
@user.stub(:with_vero_context).and_return(@context)
|
133
120
|
end
|
134
121
|
|
135
122
|
context 'and not using Ruby 1.8.7' do
|
136
123
|
before { stub_const('RUBY_VERSION', '1.9.3') }
|
137
124
|
|
138
125
|
it 'sends' do
|
139
|
-
@user.identify!.should
|
126
|
+
@user.identify!.should be_nil
|
140
127
|
end
|
141
128
|
end
|
142
129
|
end
|
@@ -165,19 +152,16 @@ describe Vero::Trackable do
|
|
165
152
|
end
|
166
153
|
|
167
154
|
context 'when set to use async' do
|
168
|
-
let(:my_context) { Vero::Context.new(Vero::App.default_context) }
|
169
|
-
|
170
155
|
before do
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
@user.stub(:with_vero_context).and_return(my_context)
|
156
|
+
@context = vero_context(@user, false, true)
|
157
|
+
@user.stub(:with_vero_context).and_return(@context)
|
175
158
|
end
|
176
159
|
|
177
160
|
context 'and using Ruby 1.8.7' do
|
178
161
|
before { stub_const('RUBY_VERSION', '1.8.7') }
|
179
162
|
|
180
163
|
it 'raises an error' do
|
164
|
+
@context.config.disabled = false
|
181
165
|
expect { @user.with_vero_context.update_user! }.to raise_error
|
182
166
|
end
|
183
167
|
end
|
@@ -186,7 +170,7 @@ describe Vero::Trackable do
|
|
186
170
|
before { stub_const('RUBY_VERSION', '1.9.3') }
|
187
171
|
|
188
172
|
it 'sends' do
|
189
|
-
@user.with_vero_context.update_user!.should
|
173
|
+
@user.with_vero_context.update_user!.should be_nil
|
190
174
|
end
|
191
175
|
end
|
192
176
|
end
|
@@ -224,7 +208,7 @@ describe Vero::Trackable do
|
|
224
208
|
|
225
209
|
@user.stub(:with_vero_context).and_return(context)
|
226
210
|
|
227
|
-
@user.with_vero_context.update_user_tags!.should
|
211
|
+
@user.with_vero_context.update_user_tags!.should be_nil
|
228
212
|
end
|
229
213
|
end
|
230
214
|
end
|
@@ -252,28 +236,16 @@ describe Vero::Trackable do
|
|
252
236
|
end
|
253
237
|
|
254
238
|
context 'when using async' do
|
255
|
-
let(:my_context) { Vero::Context.new(Vero::App.default_context) }
|
256
|
-
|
257
239
|
before do
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
@user.stub(:with_vero_context).and_return(my_context)
|
262
|
-
end
|
263
|
-
|
264
|
-
context 'and using Ruby 1.8.7' do
|
265
|
-
before { stub_const('RUBY_VERSION', '1.8.7') }
|
266
|
-
|
267
|
-
it 'raises an error' do
|
268
|
-
expect { @user.with_vero_context.unsubscribe! }.to raise_error
|
269
|
-
end
|
240
|
+
@context = vero_context(@user, false, true)
|
241
|
+
@user.stub(:with_vero_context).and_return(@context)
|
270
242
|
end
|
271
243
|
|
272
244
|
context 'and using Ruby 1.9.3' do
|
273
245
|
before { stub_const('RUBY_VERSION', '1.9.3') }
|
274
246
|
|
275
247
|
it 'sends' do
|
276
|
-
@user.with_vero_context.unsubscribe!.should
|
248
|
+
@user.with_vero_context.unsubscribe!.should be_nil
|
277
249
|
end
|
278
250
|
end
|
279
251
|
end
|
@@ -342,6 +314,12 @@ describe Vero::Trackable do
|
|
342
314
|
user = UserWithPrivateExtras.new
|
343
315
|
user.to_vero.should == {:email => 'durkster@gmail.com', :age => 26, :_user_type => "UserWithPrivateExtras"}
|
344
316
|
end
|
317
|
+
|
318
|
+
it "should allow extras to be provided instead :id or :email" do
|
319
|
+
user = UserWithOnlyExtras.new
|
320
|
+
user.properties = {:email => user.email}
|
321
|
+
user.to_vero.should == {:email => 'durkster@gmail.com', :_user_type => "UserWithOnlyExtras"}
|
322
|
+
end
|
345
323
|
end
|
346
324
|
|
347
325
|
describe :with_vero_context do
|
data/spec/spec_helper.rb
CHANGED
@@ -2,6 +2,7 @@ require 'rubygems'
|
|
2
2
|
require 'bundler/setup'
|
3
3
|
require 'vero'
|
4
4
|
require 'json'
|
5
|
+
require 'sucker_punch/testing/inline'
|
5
6
|
|
6
7
|
Dir[::File.expand_path('../support/**/*.rb', __FILE__)].each { |f| require f }
|
7
8
|
|
@@ -14,4 +15,4 @@ def stub_env(new_env, &block)
|
|
14
15
|
block.call
|
15
16
|
ensure
|
16
17
|
Rails.instance_variable_set("@_env", ActiveSupport::StringInquirer.new(original_env))
|
17
|
-
end
|
18
|
+
end
|
@@ -91,4 +91,15 @@ class UserWithPrivateExtras
|
|
91
91
|
def properties
|
92
92
|
{:age => 26}
|
93
93
|
end
|
94
|
+
end
|
95
|
+
|
96
|
+
class UserWithOnlyExtras
|
97
|
+
include Vero::Trackable
|
98
|
+
trackable({:extras => :properties})
|
99
|
+
|
100
|
+
attr_accessor :properties
|
101
|
+
|
102
|
+
def email
|
103
|
+
'durkster@gmail.com'
|
104
|
+
end
|
94
105
|
end
|
data/vero.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vero
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-07-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
@@ -124,21 +124,21 @@ dependencies:
|
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '0'
|
126
126
|
- !ruby/object:Gem::Dependency
|
127
|
-
name:
|
127
|
+
name: sucker_punch
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|
129
129
|
none: false
|
130
130
|
requirements:
|
131
|
-
- -
|
131
|
+
- - ~>
|
132
132
|
- !ruby/object:Gem::Version
|
133
|
-
version: 0
|
133
|
+
version: '1.0'
|
134
134
|
type: :runtime
|
135
135
|
prerelease: false
|
136
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
137
|
none: false
|
138
138
|
requirements:
|
139
|
-
- -
|
139
|
+
- - ~>
|
140
140
|
- !ruby/object:Gem::Version
|
141
|
-
version: 0
|
141
|
+
version: '1.0'
|
142
142
|
description:
|
143
143
|
email: support@getvero.com
|
144
144
|
executables: []
|