vero 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +1 -1
- data/info +30 -0
- data/lib/vero.rb +3 -1
- data/lib/vero/app.rb +22 -1
- data/lib/vero/config.rb +10 -2
- data/lib/vero/jobs/rest_post_job.rb +12 -0
- data/lib/vero/railtie.rb +8 -0
- data/lib/vero/trackable.rb +6 -7
- data/lib/vero/version.rb +1 -1
- data/lib/vero/view_helpers.rb +39 -0
- data/spec/lib/view_helpers_spec.rb +41 -0
- metadata +5 -2
- data/vero-0.1.2.gem +0 -0
data/Gemfile.lock
CHANGED
data/info
CHANGED
@@ -8,3 +8,33 @@ Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=",
|
|
8
8
|
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
9
9
|
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
10
10
|
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
11
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
12
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
13
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
14
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
15
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
16
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
17
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
18
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
19
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
20
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
21
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
22
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
23
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
24
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
25
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
26
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
27
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
28
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
29
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
30
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
31
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
32
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
33
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
34
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
35
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
36
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
37
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
38
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
39
|
+
Vero: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
40
|
+
User: Error attempting to track event: {:auth_token=>"YWJjZDEyMzQ6ZWZnaDU2Nzg=", :development_mode=>true, :event_name=>"test_event", :identity=>{:email=>"durkster@gmail.com", :age=>20}, :data=>{:test=>1}} error: Connection refused - connect(2)
|
data/lib/vero.rb
CHANGED
data/lib/vero/app.rb
CHANGED
@@ -7,7 +7,6 @@ module Vero
|
|
7
7
|
|
8
8
|
if block_given?
|
9
9
|
block.call(self.config)
|
10
|
-
@@config.configured = true
|
11
10
|
end
|
12
11
|
end
|
13
12
|
|
@@ -26,5 +25,27 @@ module Vero
|
|
26
25
|
def self.configured?
|
27
26
|
self.config && self.config.configured
|
28
27
|
end
|
28
|
+
|
29
|
+
def self.log(object, message)
|
30
|
+
return unless config.logging
|
31
|
+
|
32
|
+
logger = self.logger
|
33
|
+
message = "#{object.class.name}: #{message}"
|
34
|
+
|
35
|
+
if logger
|
36
|
+
logger.info message
|
37
|
+
else
|
38
|
+
puts message
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.logger
|
43
|
+
return nil unless config.logging
|
44
|
+
if defined?(Rails) && Rails.logger
|
45
|
+
Rails.logger
|
46
|
+
else
|
47
|
+
nil
|
48
|
+
end
|
49
|
+
end
|
29
50
|
end
|
30
51
|
end
|
data/lib/vero/config.rb
CHANGED
@@ -1,13 +1,17 @@
|
|
1
1
|
module Vero
|
2
2
|
class Config
|
3
3
|
attr_writer :domain
|
4
|
-
attr_accessor :api_key, :secret, :development_mode, :async, :
|
4
|
+
attr_accessor :api_key, :secret, :development_mode, :async, :disabled, :logging
|
5
5
|
|
6
6
|
def initialize
|
7
7
|
self.disabled = false
|
8
|
-
self.configured = false
|
9
8
|
self.development_mode = !Rails.env.production?
|
10
9
|
self.async = true
|
10
|
+
self.logging = false
|
11
|
+
end
|
12
|
+
|
13
|
+
def config_params
|
14
|
+
options = {api_key: self.api_key, secret: self.secret}
|
11
15
|
end
|
12
16
|
|
13
17
|
def request_params
|
@@ -27,5 +31,9 @@ module Vero
|
|
27
31
|
return if api_key.blank? || secret.blank?
|
28
32
|
Base64::encode64("#{api_key}:#{secret}").gsub(/[\n ]/, '')
|
29
33
|
end
|
34
|
+
|
35
|
+
def configured
|
36
|
+
!api_key.blank? && !secret.blank?
|
37
|
+
end
|
30
38
|
end
|
31
39
|
end
|
@@ -4,8 +4,20 @@ module Vero
|
|
4
4
|
module Jobs
|
5
5
|
class RestPostJob < Struct.new(:url, :params)
|
6
6
|
def perform
|
7
|
+
setup_logging
|
7
8
|
RestClient.post(url, params)
|
8
9
|
end
|
10
|
+
|
11
|
+
private
|
12
|
+
def setup_logging
|
13
|
+
return unless Vero::App.logger
|
14
|
+
RestClient.log = Object.new.tap do |proxy|
|
15
|
+
def proxy.<<(message)
|
16
|
+
Vero::App.logger.info message
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
9
21
|
end
|
10
22
|
end
|
11
23
|
end
|
data/lib/vero/railtie.rb
ADDED
data/lib/vero/trackable.rb
CHANGED
@@ -52,20 +52,19 @@ module Vero
|
|
52
52
|
def post_now(url, params)
|
53
53
|
begin
|
54
54
|
execute_unless_disabled do
|
55
|
-
|
56
|
-
job
|
55
|
+
Vero::Jobs::RestPostJob.new(url, params).perform
|
56
|
+
Vero::App.log(self, "method: track, params: #{params.to_json}, response: job performed")
|
57
57
|
end
|
58
58
|
rescue => e
|
59
|
-
|
59
|
+
Vero::App.log(self, "method: track, params: #{params.to_json} error: #{e.message}")
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
63
|
def post_later(url, params)
|
64
|
-
job = Vero::Jobs::RestPostJob.new(url, params)
|
65
|
-
|
66
64
|
begin
|
67
65
|
execute_unless_disabled do
|
68
|
-
::Delayed::Job.enqueue
|
66
|
+
::Delayed::Job.enqueue Vero::Jobs::RestPostJob.new(url, params)
|
67
|
+
Vero::App.log(self, "method: track, params: #{params.to_json}, response: delayed job queued")
|
69
68
|
end
|
70
69
|
rescue ActiveRecord::StatementInvalid => e
|
71
70
|
if e.message == "Could not find table 'delayed_jobs'"
|
@@ -79,7 +78,7 @@ module Vero
|
|
79
78
|
|
80
79
|
def validate_configured!
|
81
80
|
unless Vero::App.configured?
|
82
|
-
raise "You must configure the 'vero' gem. Visit https://
|
81
|
+
raise "You must configure the 'vero' gem. Visit https://github.com/semblancesystems/vero for more details."
|
83
82
|
end
|
84
83
|
end
|
85
84
|
|
data/lib/vero/version.rb
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
module Vero
|
2
|
+
module ViewHelpers
|
3
|
+
def vero_javascript_tag(method = :default)
|
4
|
+
return "" unless Vero::App.configured?
|
5
|
+
|
6
|
+
unless [:default, :mixpanel, :kissmetrics].include?(method)
|
7
|
+
method = :default
|
8
|
+
end
|
9
|
+
|
10
|
+
method_name = method.to_s + "_vero_javascript_tag"
|
11
|
+
self.send(method_name.to_sym, Vero::App.config.config_params)
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
def default_vero_javascript_tag(options = {})
|
16
|
+
content_tag :script, {type: "text/javascript"} do
|
17
|
+
result = "var _veroq = _veroq || [];" +
|
18
|
+
"setTimeout(function(){if(typeof window.Semblance==\"undefined\"){console.log(\"Vero did not load in time.\");for(var i=0;i<_veroq.length;i++){a=_veroq[i];if(a.length==3&&typeof a[2]==\"function\")a[2](null,false);}}},3000);" +
|
19
|
+
"_veroq.push(['init', {" +
|
20
|
+
options_to_string(options) +
|
21
|
+
"}]);" +
|
22
|
+
"(function() {var ve = document.createElement('script'); ve.type = 'text/javascript'; ve.async = true; ve.src = '//getvero.com/assets/m.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ve, s);})();"
|
23
|
+
result.html_safe
|
24
|
+
end.html_safe
|
25
|
+
end
|
26
|
+
|
27
|
+
def mixpanel_vero_javascript_tag(options = {})
|
28
|
+
end
|
29
|
+
|
30
|
+
def kissmetrics_vero_javascript_tag(options = {})
|
31
|
+
end
|
32
|
+
|
33
|
+
def options_to_string(options)
|
34
|
+
options = {} unless options.kind_of?(Hash)
|
35
|
+
result = options.keys.collect { |k| "#{k}: \"#{options[k]}\"" }
|
36
|
+
result.join(", ")
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'action_view'
|
3
|
+
require 'active_support'
|
4
|
+
|
5
|
+
include Vero::ViewHelpers
|
6
|
+
include ActionView::Helpers
|
7
|
+
include ActionView::Context
|
8
|
+
|
9
|
+
describe Vero::ViewHelpers do
|
10
|
+
before :each do
|
11
|
+
Vero::App.reset!
|
12
|
+
end
|
13
|
+
|
14
|
+
describe :vero_javascript_tag do
|
15
|
+
it "should return an empty string if Vero::App is not properly configured" do
|
16
|
+
Vero::ViewHelpers.vero_javascript_tag.should == ""
|
17
|
+
|
18
|
+
Vero::App.init {}
|
19
|
+
Vero::ViewHelpers.vero_javascript_tag.should == ""
|
20
|
+
end
|
21
|
+
|
22
|
+
context "Vero::App has been properly configured" do
|
23
|
+
before :each do
|
24
|
+
@api_key = "abcd1234"
|
25
|
+
@api_secret = "secret"
|
26
|
+
@api_dev_mode = false
|
27
|
+
|
28
|
+
Vero::App.init do |c|
|
29
|
+
c.api_key = @api_key
|
30
|
+
c.secret = @api_secret
|
31
|
+
c.development_mode = @api_dev_mode
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should return a properly formatted javascript snippet" do
|
36
|
+
result = "<script type=\"text/javascript\">var _veroq = _veroq || [];setTimeout(function(){if(typeof window.Semblance==\"undefined\"){console.log(\"Vero did not load in time.\");for(var i=0;i<_veroq.length;i++){a=_veroq[i];if(a.length==3&&typeof a[2]==\"function\")a[2](null,false);}}},3000);_veroq.push(['init', {api_key: \"#{@api_key}\", secret: \"#{@api_secret}\"}]);(function() {var ve = document.createElement('script'); ve.type = 'text/javascript'; ve.async = true; ve.src = '//getvero.com/assets/m.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ve, s);})();</script>"
|
37
|
+
Vero::ViewHelpers.vero_javascript_tag.should == result
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
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.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -88,16 +88,18 @@ files:
|
|
88
88
|
- lib/vero/app.rb
|
89
89
|
- lib/vero/config.rb
|
90
90
|
- lib/vero/jobs/rest_post_job.rb
|
91
|
+
- lib/vero/railtie.rb
|
91
92
|
- lib/vero/trackable.rb
|
92
93
|
- lib/vero/version.rb
|
94
|
+
- lib/vero/view_helpers.rb
|
93
95
|
- lib/vero.rb
|
94
96
|
- README.markdown
|
95
97
|
- spec/lib/app_spec.rb
|
96
98
|
- spec/lib/config_spec.rb
|
97
99
|
- spec/lib/trackable_spec.rb
|
100
|
+
- spec/lib/view_helpers_spec.rb
|
98
101
|
- spec/spec_helper.rb
|
99
102
|
- spec/support/user_support.rb
|
100
|
-
- vero-0.1.2.gem
|
101
103
|
- vero.gemspec
|
102
104
|
homepage: http://getvero.com/
|
103
105
|
licenses: []
|
@@ -127,5 +129,6 @@ test_files:
|
|
127
129
|
- spec/lib/app_spec.rb
|
128
130
|
- spec/lib/config_spec.rb
|
129
131
|
- spec/lib/trackable_spec.rb
|
132
|
+
- spec/lib/view_helpers_spec.rb
|
130
133
|
- spec/spec_helper.rb
|
131
134
|
- spec/support/user_support.rb
|
data/vero-0.1.2.gem
DELETED
Binary file
|