exvo_helpers 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.md CHANGED
@@ -2,10 +2,17 @@
2
2
 
3
3
  Note, that only significant changes are listed.
4
4
 
5
+ ## 0.4.0 (2012-05-15)
6
+
7
+ * support for Sinatra apps (use `ENV["RACK_ENV"]` to set environment)
8
+ * `kissmetrics` view helper
9
+
10
+
5
11
  ## 0.3.0 (2012-04-18)
6
12
 
7
13
  * different syntax for `google_analytics` view helper
8
14
 
15
+
9
16
  ## 0.2.2 (2012-01-30)
10
17
 
11
18
  * `google_analytics` view helper
data/README.md CHANGED
@@ -147,7 +147,7 @@ Note, that this helper does not support full API of Rails' `stylesheet_link_tag`
147
147
 
148
148
  ### google_analytics(account, opts = {})
149
149
 
150
- New, asynchronous Google Analytics javascript snippet to track page views. Note, that it will output the javascript analytics snippet only in production environment.
150
+ Asynchronous Google Analytics javascript snippet to track page views. Note, that it will output the javascript analytics snippet only in production environment.
151
151
 
152
152
  ```ruby
153
153
  = google_analytics('UA-2491324-1', :domain => 'none', :track_hash_changes => true)
@@ -162,5 +162,25 @@ New, asynchronous Google Analytics javascript snippet to track page views. Note,
162
162
  ```
163
163
 
164
164
 
165
+ ### kissmetrics
166
+
167
+ KISSmetrics javascript snippet to track users. Note, that you need to have `ENV["KISSMETRICS_KEY"]` key set.
168
+
169
+ ```ruby
170
+ = kissmetrics
171
+ ```
172
+
173
+ =>
174
+
175
+ ```html
176
+ <script type="text/javascript">
177
+ var _kmq = _kmq || [];
178
+ function _kms(u) {
179
+ setTimeout(function() {
180
+ ...
181
+ ```
182
+
183
+
184
+
165
185
 
166
186
  Copyright © 2011-2012 Exvo.com Development BV, released under the MIT license
@@ -117,6 +117,7 @@ module Exvo
117
117
  def self.env
118
118
  @@env ||= Rails.env if defined?(Rails)
119
119
  @@env ||= Merb.env if defined?(Merb)
120
+ @@env ||= ENV["RACK_ENV"] if ENV["RACK_ENV"]
120
121
  @@env ||= 'production'
121
122
  end
122
123
 
@@ -153,10 +154,10 @@ module Exvo
153
154
  :desktop_host => 'www.exvo.co',
154
155
  :themes_host => 'staging.themes.exvo.com',
155
156
  :blog_host => 'staging.blog.exvo.com',
156
- :contacts_host => 'exvo-contacts-staging.heroku.com',
157
- :inbox_host => 'exvo-inbox-staging.heroku.com',
158
- :music_host => 'exvo-music-staging.heroku.com',
159
- :pics_host => 'exvo-pictures-staging.heroku.com',
157
+ :contacts_host => 'staging.contacts.exvo.com',
158
+ :inbox_host => 'staging.inbox.exvo.com',
159
+ :music_host => 'staging.music.exvo.com',
160
+ :pics_host => 'staging.pics.exvo.com',
160
161
  :preview_host => 'staging.preview.exvo.com'
161
162
  },
162
163
  :development => {
@@ -1,5 +1,5 @@
1
1
  module Exvo
2
2
  module Helpers
3
- VERSION = "0.3.0"
3
+ VERSION = "0.4.0"
4
4
  end
5
5
  end
@@ -5,9 +5,7 @@ module Exvo
5
5
  # Returns `javascript_include_tag` with link to js bundles (based on env)
6
6
  def javascript_bundle_include_tag(bundle)
7
7
  case Exvo::Helpers.env.to_sym
8
- when :production
9
- javascript_include_tag "#{Exvo::Helpers.cdn_uri}/javascripts/#{bundle}.js"
10
- when :staging
8
+ when :production, :staging
11
9
  javascript_include_tag "#{Exvo::Helpers.cdn_uri}/javascripts/#{bundle}.js"
12
10
  else
13
11
  javascript_include_tag "#{Exvo::Helpers.cdn_uri}/javascripts/bundles/#{bundle}.js"
@@ -77,6 +75,36 @@ END
77
75
  end
78
76
  end
79
77
 
78
+ def kissmetrics
79
+ out = <<END
80
+ <script type="text/javascript">
81
+ var _kmq = _kmq || [];
82
+ function _kms(u) {
83
+ setTimeout(function() {
84
+ var s = document.createElement('script');
85
+ var f = document.getElementsByTagName('script')[0];
86
+ s.type = 'text/javascript';
87
+ s.async = true;
88
+ s.src = u;
89
+ f.parentNode.insertBefore(s, f);
90
+ }, 1);
91
+ }
92
+ _kms('//i.kissmetrics.com/i.js');
93
+ _kms('//doug1izaerwt3.cloudfront.net/#{ENV['KISSMETRICS_KEY']}.1.js');
94
+ END
95
+ if current_user && current_user.email
96
+ out += <<END
97
+ _kmq.push(['identify', '#{current_user.email}']);
98
+ END
99
+ end
100
+
101
+ out += <<END
102
+ </script>
103
+ END
104
+
105
+ out.respond_to?(:html_safe) ? out.html_safe : out
106
+ end
107
+
80
108
  end
81
109
 
82
110
  end
@@ -7,13 +7,19 @@ describe Exvo::Helpers do
7
7
  Exvo::Helpers.env.should eql('production')
8
8
  end
9
9
 
10
- it "returns 'production' when Rails.env is set to 'production'" do
10
+ it "returns 'staging' when Rails.env is set to 'staging'" do
11
11
  Kernel.const_set(:Rails, Module)
12
- Rails.should_receive(:env).and_return('production')
13
- Exvo::Helpers.env.should eql('production')
12
+ Rails.should_receive(:env).and_return('staging')
13
+ Exvo::Helpers.env.should eql('staging')
14
14
  Kernel.send(:remove_const, :Rails)
15
15
  end
16
16
 
17
+ it "returns 'staging' when RACK_ENV is set to 'staging'" do
18
+ ENV["RACK_ENV"] = 'staging'
19
+ Exvo::Helpers.env.should eql('staging')
20
+ ENV.delete("RACK_ENV")
21
+ end
22
+
17
23
  it "allows setting env" do
18
24
  Exvo::Helpers.env = 'test'
19
25
  Exvo::Helpers.env.should eql('test')
@@ -38,4 +38,18 @@ describe Exvo::ViewHelpers do
38
38
  specify { snippet.should match(/window.location.hash/) }
39
39
  end
40
40
 
41
+ describe "#kissmetrics" do
42
+ let(:snippet) { view_helper.kissmetrics }
43
+ let(:email) { "me@me.com" }
44
+ let(:current_user) { Struct.new(:email).new(email) }
45
+
46
+ before do
47
+ view_helper.should_receive(:current_user).at_least(1).times.and_return(current_user)
48
+ end
49
+
50
+ specify { snippet.should match(/<script type="text\/javascript">/) }
51
+ specify { snippet.should match(/kissmetrics\.com/) }
52
+ specify { snippet.should match(%r(identify.+#{email})) }
53
+ end
54
+
41
55
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: exvo_helpers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-18 00:00:00.000000000 Z
12
+ date: 2012-05-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &29942880 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '2.8'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *29942880
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '2.8'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: guard
27
- requirement: &29942360 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: 0.10.0
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *29942360
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.10.0
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: guard-rspec
38
- requirement: &29941880 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: 0.6.0
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *29941880
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.6.0
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: rb-fsevent
49
- requirement: &29941500 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: '0'
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *29941500
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: rb-inotify
60
- requirement: &29941040 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
@@ -65,10 +85,15 @@ dependencies:
65
85
  version: '0'
66
86
  type: :development
67
87
  prerelease: false
68
- version_requirements: *29941040
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: simplecov
71
- requirement: &29940620 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
99
  - - ! '>='
@@ -76,10 +101,15 @@ dependencies:
76
101
  version: '0'
77
102
  type: :development
78
103
  prerelease: false
79
- version_requirements: *29940620
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
80
110
  - !ruby/object:Gem::Dependency
81
111
  name: simplecov-rcov
82
- requirement: &29940200 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
83
113
  none: false
84
114
  requirements:
85
115
  - - ! '>='
@@ -87,7 +117,12 @@ dependencies:
87
117
  version: '0'
88
118
  type: :development
89
119
  prerelease: false
90
- version_requirements: *29940200
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
91
126
  description: Ruby gem providing various helper methods, like auth_host, auth_uri,
92
127
  auth_require_ssl, cdn_host, etc.
93
128
  email:
@@ -131,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
131
166
  version: '0'
132
167
  requirements: []
133
168
  rubyforge_project:
134
- rubygems_version: 1.8.16
169
+ rubygems_version: 1.8.24
135
170
  signing_key:
136
171
  specification_version: 3
137
172
  summary: Collection of helper methods for various Exvo related apps/services