staccato-rack 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/README.md +1 -1
- data/lib/staccato/rack.rb +50 -42
- data/lib/staccato/rack/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YWM4ZDYzNTQ2YmU0MmQ4MDgwYjFlNzZhZmE4ZTU2NjYyNjM2MDI5Zg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
N2RlMjZiODM2Zjc3Mjg1ZWNiN2NhMTg1ZjAyOWJkZTc0MjdmMmJmMA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Yjk1ZTc4YTM3NzNmZGZmNTc2MjJiNmQ1NzgyNzk0MjMwNDEyZmQ4MWM5ZWNk
|
10
|
+
NmU5YjNkOTViMThjMzIxMTcxOTg0MmRjMTA2Y2JjNmE4NDQzN2I0MWQ4NTg3
|
11
|
+
NDUzMjk2Njg4ZjFhNWVjNWJlMGM1Y2Q1Y2IwZjVjY2VhZTU0NjY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YWRhODgzMzVkNDgwNzlhYzBjNTE1OGEzOTdjZmRhNDBmZjI3MDQzM2NjMjU0
|
14
|
+
ZGVkYWI3ZWRiNmZhZWJhZTc5MGMwNGI0YTk3ODk3MGQzNzA3MTk1MzgxYzM5
|
15
|
+
ODFlM2FlNWVlYmFlODE4NGQ5MDRmNjRiOWQ2ZjAzNmQwNTU0ZWI=
|
data/README.md
CHANGED
@@ -27,7 +27,7 @@ using in middleware:
|
|
27
27
|
using in your Rails application, add the following line to your application config file (`config/application.rb` for Rails 3 and above, `config/environment.rb` for Rails 2):
|
28
28
|
|
29
29
|
```ruby
|
30
|
-
config.middleware.use Staccato::Rack::Middleware, 'UA-TRACKING-KEY-HERE'
|
30
|
+
config.middleware.use Staccato::Rack::Middleware, 'UA-TRACKING-KEY-HERE', logger: Rails.logger
|
31
31
|
```
|
32
32
|
## Development
|
33
33
|
|
data/lib/staccato/rack.rb
CHANGED
@@ -5,66 +5,74 @@ require 'ostruct'
|
|
5
5
|
|
6
6
|
module Staccato
|
7
7
|
module Rack
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
@custom_metrics = []
|
15
|
-
@custom_dimensions = []
|
16
|
-
end
|
8
|
+
class PageView < OpenStruct
|
9
|
+
def initialize
|
10
|
+
super
|
11
|
+
@custom_metrics = []
|
12
|
+
@custom_dimensions = []
|
13
|
+
end
|
17
14
|
|
18
|
-
|
19
|
-
|
20
|
-
|
15
|
+
def add_custom_metric(position, value)
|
16
|
+
@custom_metrics << [position, value]
|
17
|
+
end
|
21
18
|
|
22
|
-
|
23
|
-
|
24
|
-
|
19
|
+
def add_custom_dimension(position, value)
|
20
|
+
@custom_dimensions << [position, value]
|
21
|
+
end
|
25
22
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
end
|
33
|
-
track_hit(tracker, page_view_params, request)
|
23
|
+
def track!(default_tracker, tracking_id, request)
|
24
|
+
page_view_params = marshal_dump
|
25
|
+
if page_view_params[:client_id]
|
26
|
+
tracker = Staccato.tracker(tracking_id, page_view_params[:client_id])
|
27
|
+
else
|
28
|
+
tracker = default_tracker
|
34
29
|
end
|
30
|
+
track_hit(tracker, page_view_params, request)
|
31
|
+
end
|
35
32
|
|
36
|
-
|
33
|
+
private
|
37
34
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
35
|
+
def track_hit(tracker, page_view_params, request)
|
36
|
+
hit = Staccato::Pageview.new(tracker, page_view_params.merge(path: request.fullpath,
|
37
|
+
hostname: request.host,
|
38
|
+
user_agent: request.env['HTTP_USER_AGENT'],
|
39
|
+
user_ip: request.ip))
|
40
|
+
add_custom_to_hit(hit)
|
41
|
+
r = hit.track!
|
42
|
+
logger.info "GA Tracking: #{hit.params.inspect} => #{r.response.code}"
|
43
|
+
hit
|
44
|
+
end
|
47
45
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
end
|
46
|
+
def add_custom_to_hit(hit)
|
47
|
+
@custom_metrics.each do |p, v|
|
48
|
+
hit.add_custom_metric(p, v)
|
49
|
+
end
|
50
|
+
@custom_dimensions.each do |p, v|
|
51
|
+
hit.add_custom_dimension(p, v)
|
55
52
|
end
|
56
53
|
end
|
54
|
+
end
|
55
|
+
|
56
|
+
class NullLogger
|
57
|
+
def info(*)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
# middleware
|
62
|
+
class Middleware
|
63
|
+
# page view wrapper
|
57
64
|
|
58
65
|
attr_accessor :last_hit
|
59
66
|
|
60
|
-
def initialize(app, tracking_id)
|
67
|
+
def initialize(app, tracking_id, options = {})
|
61
68
|
@app = app
|
62
69
|
@tracking_id = tracking_id
|
63
70
|
@default_tracker = Staccato.tracker(tracking_id)
|
71
|
+
@logger = options[:logger] || NullLogger.new
|
64
72
|
end
|
65
73
|
|
66
74
|
def call(env)
|
67
|
-
env['staccato.pageview'] = PageView.new
|
75
|
+
env['staccato.pageview'] = PageView.new.tap{|p| p.logger = @logger }
|
68
76
|
|
69
77
|
@last_hit = nil
|
70
78
|
status, headers, body = @app.call(env)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: staccato-rack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Grant Speelman
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|