rack-tracker 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f55df00d45fb101f47bca6a636ae7767a5fe4cfe
4
- data.tar.gz: 32310d9a1103ac86809a3e374e7759de91a4c135
3
+ metadata.gz: c6f2b15cb4ac572305b8421779e956633f04f942
4
+ data.tar.gz: f9cc033dda73492645c530763bb629be4e505074
5
5
  SHA512:
6
- metadata.gz: f4b01ad9bbfb3cd1df9e499492beb78bd80bc90fd20217714b6879bfc45009936c73734e0ccd9a03b9c3f29d1af889193ebec944fd13eefdb561cc0e99fe63b7
7
- data.tar.gz: 27df0ea951b32d8db3d1e95bd5fd5a309fdce2327169a3606c6cf812bac0fbf3495b537f3d4a5f5b8dfa6e75b7e12f12a2f532596f66f5b77985e97ceee7ba9d
6
+ metadata.gz: 6dc9d9ffa1264d87885c58042f4dafd3362fac3b8d45e6986362ffc8c743fe7dce1ca16a60f80f7bd1255255d6ab7e5985e71a67637cb85ae452adeb3fe545b4
7
+ data.tar.gz: c4cca8ee9f40adc66b1b9e48497589af502c6a4513dcfe412da8cdc7cf764eaf160e3e890bf979b03890335ffeb81700a1abefb433784a27e64d8b0237f0d58c
data/README.md CHANGED
@@ -48,8 +48,8 @@ To issue [Events](https://developers.google.com/analytics/devguides/collection/a
48
48
 
49
49
  ```ruby
50
50
  def show
51
- tracker do
52
- google_analytics category: 'button', action: 'click', label: 'nav-buttons', value: 'X'
51
+ tracker do |t|
52
+ t.google_analytics category: 'button', action: 'click', label: 'nav-buttons', value: 'X'
53
53
  end
54
54
  end
55
55
  ```
@@ -66,8 +66,8 @@ To track [Conversions](https://www.facebook.com/help/435189689870514) from the s
66
66
 
67
67
  ```ruby
68
68
  def show
69
- tracker do
70
- facebook '123456789', value: 1, currency: 'EUR'
69
+ tracker do |t|
70
+ t.facebook '123456789', value: 1, currency: 'EUR'
71
71
  end
72
72
  end
73
73
  ```
data/lib/rack/tracker.rb CHANGED
@@ -27,19 +27,14 @@ module Rack
27
27
  return [@status, @headers, @body] unless html?
28
28
  response = Rack::Response.new([], @status, @headers)
29
29
 
30
- env[EVENT_TRACKING_KEY] = {} unless env[EVENT_TRACKING_KEY]
30
+ env[EVENT_TRACKING_KEY] ||= {}
31
31
 
32
- session = env["rack.session"]
33
- if response.ok?
34
- # Write out the events now
35
-
36
- # Get any stored events from a redirection
37
- stored_events = session.delete(EVENT_TRACKING_KEY) if session
32
+ if session = env["rack.session"]
33
+ env[EVENT_TRACKING_KEY].deep_merge!(session.delete(EVENT_TRACKING_KEY) || {}) { |key, old, new| Array.wrap(old) + Array.wrap(new) }
34
+ end
38
35
 
39
- env[EVENT_TRACKING_KEY].deep_merge!(stored_events) { |key, old, new| Array.wrap(old) + Array.wrap(new) } unless stored_events.nil?
40
- elsif response.redirection? && session
41
- # Store the events until next time
42
- env["rack.session"][EVENT_TRACKING_KEY] = env[EVENT_TRACKING_KEY]
36
+ if response.redirection? && session
37
+ session[EVENT_TRACKING_KEY] = env[EVENT_TRACKING_KEY]
43
38
  end
44
39
 
45
40
  @body.each { |fragment| response.write inject(env, fragment) }
@@ -2,9 +2,7 @@ module Rack
2
2
  class Tracker
3
3
  module Controller
4
4
  def tracker(&block)
5
- if block_given?
6
- Rack::Tracker::HandlerDelegator.new(env).instance_exec(&block)
7
- end
5
+ yield(Rack::Tracker::HandlerDelegator.new(env)) if block_given?
8
6
  end
9
7
  end
10
8
  end
@@ -21,7 +21,7 @@ class Rack::Tracker::HandlerDelegator
21
21
 
22
22
  def write_event(event)
23
23
  if env.key?('tracker')
24
- self.env = env['tracker'].deep_merge!(event)
24
+ self.env = env['tracker'].deep_merge!(event) { |key, old, new| Array.wrap(old) + Array.wrap(new) }
25
25
  else
26
26
  self.env['tracker'] = event
27
27
  end
@@ -1,5 +1,5 @@
1
1
  module Rack
2
2
  class Tracker
3
- VERSION = "0.0.3"
3
+ VERSION = "0.0.4"
4
4
  end
5
5
  end
@@ -8,16 +8,16 @@ class MetalController < ActionController::Metal
8
8
  layout 'application'
9
9
 
10
10
  def index
11
- tracker do
12
- track_all_the_things like: 'no-one-else'
13
- another_handler likes: 'you'
11
+ tracker do |t|
12
+ t.track_all_the_things like: 'no-one-else'
13
+ t.another_handler likes: 'you'
14
14
  end
15
15
  render "metal/index"
16
16
  end
17
17
 
18
18
  def facebook
19
- tracker do
20
- facebook 'conversion-event', { value: '1', currency: 'EUR' }
19
+ tracker do |t|
20
+ t.facebook 'conversion-event', { value: '1', currency: 'EUR' }
21
21
  end
22
22
  render "metal/index"
23
23
  end
@@ -8,8 +8,8 @@ class SomeController
8
8
  end
9
9
 
10
10
  def index
11
- tracker do
12
- google_analytics category: 'foo'
11
+ tracker do |t|
12
+ t.google_analytics category: 'foo'
13
13
  end
14
14
  end
15
15
  end
@@ -35,6 +35,8 @@ RSpec.describe Rack::Tracker do
35
35
  [200, {'Content-Type' => 'application/xml'}, ['Xml here']]
36
36
  when '/redirect' then
37
37
  [302, {'Content-Type' => 'application/html', 'Location' => '/'}, ['<body>redirection</body>']]
38
+ when '/moved' then
39
+ [301, {'Content-Type' => 'application/html', 'Location' => '/redirect'}, ['<body>redirection</body>']]
38
40
  else
39
41
  [404, 'Nothing here']
40
42
  end
@@ -88,6 +90,12 @@ RSpec.describe Rack::Tracker do
88
90
  follow_redirect!
89
91
  expect(last_response.body).to include("alert('Keep this!');")
90
92
  end
93
+
94
+ it 'will keep the tracker attributes over multiple redirects' do
95
+ get '/moved', {}, { 'tracker' => { 'dummy' => 'Keep this twice!' } }
96
+ follow_redirect!
97
+ expect(last_response.body).to include("alert('Keep this twice!');")
98
+ end
91
99
  end
92
100
 
93
101
  describe 'when not html' do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-tracker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lars Brillert
@@ -9,132 +9,132 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-08-27 00:00:00.000000000 Z
12
+ date: 2014-09-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
20
  version: 1.5.2
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ~>
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
27
  version: 1.5.2
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: tilt
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ~>
32
+ - - "~>"
33
33
  - !ruby/object:Gem::Version
34
34
  version: 1.4.1
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ~>
39
+ - - "~>"
40
40
  - !ruby/object:Gem::Version
41
41
  version: 1.4.1
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: activesupport
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ~>
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
48
  version: 4.1.0
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ~>
53
+ - - "~>"
54
54
  - !ruby/object:Gem::Version
55
55
  version: 4.1.0
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: bundler
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ~>
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
62
  version: '1.5'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ~>
67
+ - - "~>"
68
68
  - !ruby/object:Gem::Version
69
69
  version: '1.5'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rake
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - '>='
74
+ - - ">="
75
75
  - !ruby/object:Gem::Version
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - '>='
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: rspec
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ~>
88
+ - - "~>"
89
89
  - !ruby/object:Gem::Version
90
90
  version: 3.0.0
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ~>
95
+ - - "~>"
96
96
  - !ruby/object:Gem::Version
97
97
  version: 3.0.0
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: capybara
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - ~>
102
+ - - "~>"
103
103
  - !ruby/object:Gem::Version
104
104
  version: 2.4.1
105
105
  type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - ~>
109
+ - - "~>"
110
110
  - !ruby/object:Gem::Version
111
111
  version: 2.4.1
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: actionpack
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - ~>
116
+ - - "~>"
117
117
  - !ruby/object:Gem::Version
118
118
  version: 4.1.5
119
119
  type: :development
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - ~>
123
+ - - "~>"
124
124
  - !ruby/object:Gem::Version
125
125
  version: 4.1.5
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: pry
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
- - - '>='
130
+ - - ">="
131
131
  - !ruby/object:Gem::Version
132
132
  version: '0'
133
133
  type: :development
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - '>='
137
+ - - ">="
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
140
  description: Don’t fool around with adding tracking partials to your app and concentrate
@@ -146,9 +146,9 @@ executables: []
146
146
  extensions: []
147
147
  extra_rdoc_files: []
148
148
  files:
149
- - .gitignore
150
- - .rspec
151
- - .travis.yml
149
+ - ".gitignore"
150
+ - ".rspec"
151
+ - ".travis.yml"
152
152
  - Gemfile
153
153
  - LICENSE.txt
154
154
  - README.md
@@ -191,12 +191,12 @@ require_paths:
191
191
  - lib
192
192
  required_ruby_version: !ruby/object:Gem::Requirement
193
193
  requirements:
194
- - - '>='
194
+ - - ">="
195
195
  - !ruby/object:Gem::Version
196
196
  version: '0'
197
197
  required_rubygems_version: !ruby/object:Gem::Requirement
198
198
  requirements:
199
- - - '>='
199
+ - - ">="
200
200
  - !ruby/object:Gem::Version
201
201
  version: '0'
202
202
  requirements: []