vero 0.4 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -40,15 +40,7 @@ GEM
40
40
  multi_json (~> 1.0)
41
41
  arel (3.0.2)
42
42
  builder (3.0.3)
43
- columnize (0.3.6)
44
43
  connection_pool (0.9.2)
45
- debugger (1.2.0)
46
- columnize (>= 0.3.1)
47
- debugger-linecache (~> 1.1.1)
48
- debugger-ruby_core_source (~> 1.1.3)
49
- debugger-linecache (1.1.2)
50
- debugger-ruby_core_source (>= 1.1.1)
51
- debugger-ruby_core_source (1.1.3)
52
44
  delayed_job (3.0.3)
53
45
  activesupport (~> 3.0)
54
46
  delayed_job_active_record (0.3.2)
@@ -129,7 +121,6 @@ PLATFORMS
129
121
  ruby
130
122
 
131
123
  DEPENDENCIES
132
- debugger
133
124
  rails
134
125
  rspec
135
126
  vero!
data/README.markdown CHANGED
@@ -12,7 +12,7 @@ Include in your Gemfile:
12
12
 
13
13
  Or install the gem:
14
14
 
15
- gem install 'vero'
15
+ gem install vero
16
16
 
17
17
  Create a [Vero account](http://getvero.com). Create an initializer in your config/initializers folder called vero.rb with the following:
18
18
 
@@ -24,11 +24,13 @@ Create a [Vero account](http://getvero.com). Create an initializer in your confi
24
24
 
25
25
  You will be able to find your API key and secret by logging into Vero and clicking the 'Account' button at the top of the page.
26
26
 
27
- By default, events are sent asynchronously using DelayedJob. We do however offer a few alternatives:
27
+ By default, events are sent asynchronously using a background thread. We do however offer a few alternatives:
28
28
 
29
29
  config.async = :none # Synchronously
30
- config.async = :thread # Background thread
31
- config.async = :delayed_job # DelayedJob (default)
30
+ config.async = :thread # Background thread (default)
31
+ config.async = :delayed_job # DelayedJob
32
+
33
+ **Note:** Background threads are not supported by Ruby 1.8.7 or earlier. You must explicitly set `config.async` to either :none or :delayed_job.
32
34
 
33
35
  ## Setup tracking
34
36
 
data/lib/vero.rb CHANGED
@@ -29,17 +29,10 @@ module Vero
29
29
  module Senders
30
30
  autoload :Base, 'vero/senders/base'
31
31
  autoload :DelayedJob, 'vero/senders/delayed_job'
32
+ autoload :Invalid, 'vero/senders/invalid'
32
33
  autoload :Thread, 'vero/senders/thread'
33
34
  end
34
35
  autoload :Sender, 'vero/sender'
35
36
  end
36
37
 
37
- if defined? ActiveRecord
38
- require 'delayed_job_active_record'
39
- end
40
-
41
- if defined? Mongoid
42
- require 'delayed_job_mongoid'
43
- end
44
-
45
38
  require 'vero/railtie' if defined?(Rails)
data/lib/vero/sender.rb CHANGED
@@ -1,13 +1,23 @@
1
1
  module Vero
2
2
  class Sender
3
3
  def self.senders
4
- @senders ||= {
5
- true => Vero::Senders::Thread,
6
- false => Vero::Senders::Base,
7
- :none => Vero::Senders::Base,
8
- :thread => Vero::Senders::Thread,
9
- :delayed_job => Vero::Senders::DelayedJob
10
- }
4
+ @senders ||= begin
5
+ t = {
6
+ true => Vero::Senders::Invalid,
7
+ false => Vero::Senders::Base,
8
+ :none => Vero::Senders::Base,
9
+ :thread => Vero::Senders::Invalid,
10
+ :delayed_job => Vero::Senders::DelayedJob
11
+ }
12
+
13
+ if RUBY_VERSION =~ /1\.9\./
14
+ t.merge!(
15
+ true => Vero::Senders::Thread,
16
+ :thread => Vero::Senders::Thread
17
+ )
18
+ end
19
+ t
20
+ end
11
21
  end
12
22
 
13
23
  def self.send(api_class, sender_strategy, domain, options)
@@ -17,6 +27,5 @@ module Vero
17
27
  Vero::App.log(self.new, "method: #{api_class.name}, options: #{options.to_json}, error: #{e.message}")
18
28
  raise e
19
29
  end
20
-
21
30
  end
22
31
  end
@@ -1,3 +1,7 @@
1
+ require 'delayed_job'
2
+ require 'delayed_job_active_record' if defined?(ActiveRecord)
3
+ require 'delayed_job_mongoid' if defined?(Mongoid)
4
+
1
5
  module Vero
2
6
  module Senders
3
7
  class DelayedJob
@@ -0,0 +1,9 @@
1
+ module Vero
2
+ module Senders
3
+ class Invalid
4
+ def call(api_class, domain, options)
5
+ raise "Vero sender not supported by your version of Ruby. Please change `config.async` to a valid sender. See https://github.com/getvero/vero for more information."
6
+ end
7
+ end
8
+ end
9
+ end
@@ -3,7 +3,7 @@ require 'girl_friday'
3
3
  module Vero
4
4
  module Senders
5
5
  class Thread
6
- VERO_SENDER_QUEUE ||= ::GirlFriday::WorkQueue.new(:vero_queue, :size => 1) do |msg|
6
+ VERO_SENDER_QUEUE = ::GirlFriday::WorkQueue.new(:vero_queue, :size => 1) do |msg|
7
7
  api_class = msg[:api_class]
8
8
  domain = msg[:domain]
9
9
  options = msg[:options]
data/lib/vero/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Vero
2
- VERSION = '0.4'
2
+ VERSION = '0.4.1'
3
3
  end
@@ -83,8 +83,13 @@ describe Vero::Trackable do
83
83
 
84
84
  @user.stub(:with_vero_context).and_return(context)
85
85
 
86
- @user.track!(@request_params[:event_name], @request_params[:data]).should be_true
87
- @user.track!(@request_params[:event_name]).should be_true
86
+ if RUBY_VERSION =~ /1\.9\./
87
+ @user.track!(@request_params[:event_name], @request_params[:data]).should be_true
88
+ @user.track!(@request_params[:event_name]).should be_true
89
+ else
90
+ expect { @user.track!(@request_params[:event_name], @request_params[:data]) }.to raise_error
91
+ expect { @user.track!(@request_params[:event_name]) }.to raise_error
92
+ end
88
93
  end
89
94
 
90
95
  # it "should raise an error when async is set to false and the request times out" do
@@ -127,7 +132,11 @@ describe Vero::Trackable do
127
132
 
128
133
  @user.stub(:with_vero_context).and_return(context)
129
134
 
130
- @user.identify!.should be_true
135
+ if RUBY_VERSION =~ /1\.9\./
136
+ @user.identify!.should be_true
137
+ else
138
+ expect { @user.identify! }.to raise_error
139
+ end
131
140
  end
132
141
  end
133
142
 
@@ -173,7 +182,11 @@ describe Vero::Trackable do
173
182
 
174
183
  @user.stub(:with_vero_context).and_return(context)
175
184
 
176
- @user.with_vero_context.update_user!.should be_true
185
+ if RUBY_VERSION =~ /1\.9\./
186
+ @user.with_vero_context.update_user!.should be_true
187
+ else
188
+ expect { @user.with_vero_context.update_user! }.to raise_error
189
+ end
177
190
  end
178
191
  end
179
192
 
@@ -208,7 +221,7 @@ describe Vero::Trackable do
208
221
 
209
222
  @user.stub(:with_vero_context).and_return(context)
210
223
 
211
- @user.with_vero_context.update_user_tags!.should be_true
224
+ expect { @user.with_vero_context.update_user_tags! }.to raise_error
212
225
  end
213
226
  end
214
227
 
@@ -241,7 +254,7 @@ describe Vero::Trackable do
241
254
 
242
255
  @user.stub(:with_vero_context).and_return(context)
243
256
 
244
- @user.with_vero_context.unsubscribe!.should be_true
257
+ expect { @user.with_vero_context.unsubscribe! }.to raise_error
245
258
  end
246
259
  end
247
260
 
data/spec/spec_helper.rb CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'bundler/setup'
3
3
 
4
4
  require 'vero'
5
- require 'debugger'
5
+ # require 'debugger'
6
6
 
7
7
  Dir[::File.expand_path('../support/**/*.rb', __FILE__)].each { |f| require f }
8
8
 
data/vero.gemspec CHANGED
@@ -14,7 +14,6 @@ Gem::Specification.new do |s|
14
14
 
15
15
  dependencies = [
16
16
  [:development, 'rails'],
17
- [:development, 'debugger'],
18
17
  [:development, 'rspec'],
19
18
  [:runtime, 'rest-client'],
20
19
  [:runtime, 'delayed_job'],
metadata CHANGED
@@ -1,150 +1,130 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: vero
3
- version: !ruby/object:Gem::Version
4
- version: '0.4'
3
+ version: !ruby/object:Gem::Version
4
+ hash: 13
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 4
9
+ - 1
10
+ version: 0.4.1
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - James Lamont
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2012-10-30 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2012-11-11 00:00:00 +11:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
15
22
  name: rails
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :development
23
23
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
29
- version: '0'
30
- - !ruby/object:Gem::Dependency
31
- name: debugger
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
38
33
  type: :development
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
- - !ruby/object:Gem::Dependency
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
47
36
  name: rspec
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: '0'
54
- type: :development
55
37
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- - !ruby/object:Gem::Dependency
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :development
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
63
50
  name: rest-client
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: '0'
70
- type: :runtime
71
51
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
78
- - !ruby/object:Gem::Dependency
79
- name: delayed_job
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ! '>='
84
- - !ruby/object:Gem::Version
85
- version: '0'
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
86
61
  type: :runtime
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
64
+ name: delayed_job
87
65
  prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
94
- - !ruby/object:Gem::Dependency
95
- name: delayed_job_active_record
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ! '>='
100
- - !ruby/object:Gem::Version
101
- version: '0'
66
+ requirement: &id004 !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ hash: 3
72
+ segments:
73
+ - 0
74
+ version: "0"
102
75
  type: :runtime
76
+ version_requirements: *id004
77
+ - !ruby/object:Gem::Dependency
78
+ name: delayed_job_active_record
103
79
  prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- - !ruby/object:Gem::Dependency
111
- name: delayed_job_mongoid
112
- requirement: !ruby/object:Gem::Requirement
113
- none: false
114
- requirements:
115
- - - ! '>='
116
- - !ruby/object:Gem::Version
117
- version: '0'
80
+ requirement: &id005 !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ hash: 3
86
+ segments:
87
+ - 0
88
+ version: "0"
118
89
  type: :runtime
90
+ version_requirements: *id005
91
+ - !ruby/object:Gem::Dependency
92
+ name: delayed_job_mongoid
119
93
  prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - ! '>='
124
- - !ruby/object:Gem::Version
125
- version: '0'
126
- - !ruby/object:Gem::Dependency
127
- name: girl_friday
128
- requirement: !ruby/object:Gem::Requirement
129
- none: false
130
- requirements:
131
- - - ! '>='
132
- - !ruby/object:Gem::Version
133
- version: '0'
94
+ requirement: &id006 !ruby/object:Gem::Requirement
95
+ none: false
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ hash: 3
100
+ segments:
101
+ - 0
102
+ version: "0"
134
103
  type: :runtime
104
+ version_requirements: *id006
105
+ - !ruby/object:Gem::Dependency
106
+ name: girl_friday
135
107
  prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
139
- - - ! '>='
140
- - !ruby/object:Gem::Version
141
- version: '0'
108
+ requirement: &id007 !ruby/object:Gem::Requirement
109
+ none: false
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ hash: 3
114
+ segments:
115
+ - 0
116
+ version: "0"
117
+ type: :runtime
118
+ version_requirements: *id007
142
119
  description:
143
120
  email: support@getvero.com
144
121
  executables: []
122
+
145
123
  extensions: []
124
+
146
125
  extra_rdoc_files: []
147
- files:
126
+
127
+ files:
148
128
  - Gemfile
149
129
  - Gemfile.lock
150
130
  - info
@@ -163,6 +143,7 @@ files:
163
143
  - lib/vero/sender.rb
164
144
  - lib/vero/senders/base.rb
165
145
  - lib/vero/senders/delayed_job.rb
146
+ - lib/vero/senders/invalid.rb
166
147
  - lib/vero/senders/thread.rb
167
148
  - lib/vero/trackable/base.rb
168
149
  - lib/vero/trackable/interface.rb
@@ -186,31 +167,41 @@ files:
186
167
  - spec/support/user_support.rb
187
168
  - spec/support/vero_user_support.rb
188
169
  - vero.gemspec
170
+ has_rdoc: true
189
171
  homepage: http://www.getvero.com/
190
172
  licenses: []
173
+
191
174
  post_install_message:
192
175
  rdoc_options: []
193
- require_paths:
176
+
177
+ require_paths:
194
178
  - lib
195
- required_ruby_version: !ruby/object:Gem::Requirement
179
+ required_ruby_version: !ruby/object:Gem::Requirement
196
180
  none: false
197
- requirements:
198
- - - ! '>='
199
- - !ruby/object:Gem::Version
200
- version: '0'
201
- required_rubygems_version: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ hash: 3
185
+ segments:
186
+ - 0
187
+ version: "0"
188
+ required_rubygems_version: !ruby/object:Gem::Requirement
202
189
  none: false
203
- requirements:
204
- - - ! '>='
205
- - !ruby/object:Gem::Version
206
- version: '0'
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ hash: 3
194
+ segments:
195
+ - 0
196
+ version: "0"
207
197
  requirements: []
198
+
208
199
  rubyforge_project:
209
- rubygems_version: 1.8.24
200
+ rubygems_version: 1.6.2
210
201
  signing_key:
211
202
  specification_version: 3
212
203
  summary: Rails 3.x gem for Vero
213
- test_files:
204
+ test_files:
214
205
  - spec/lib/api/events/track_api_spec.rb
215
206
  - spec/lib/api/users/edit_api_spec.rb
216
207
  - spec/lib/api/users/edit_tags_api_spec.rb