staccato-rack 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OTgwMzI4NDk3OWE0OWE1NDY2MzFjNTU2NzI1YTRkNDljOTUzNjg2Mw==
4
+ YWM4ZDYzNTQ2YmU0MmQ4MDgwYjFlNzZhZmE4ZTU2NjYyNjM2MDI5Zg==
5
5
  data.tar.gz: !binary |-
6
- YzA3ZGRkNzI5MTc0NTcwMjA3ZDgyNDhjYmY4MWNmNjNiNjI1NTUwYw==
6
+ N2RlMjZiODM2Zjc3Mjg1ZWNiN2NhMTg1ZjAyOWJkZTc0MjdmMmJmMA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- Y2VlOTI0MDNmYzEyYzQyY2JlODEyNGU1NGYyMjU2OGJlYWExMWQ4ZDQzMzRh
10
- NjBhMmZiY2VjMjY1ZDFkMmJmODEwODJiY2I2ODk0NTRiMWU0OWYyOGRiMDJl
11
- OTk4ZGIwMTkzYTI3OWQzZGQwZDFkZWIyZDI5MDQyZTNiZTY1ZmQ=
9
+ Yjk1ZTc4YTM3NzNmZGZmNTc2MjJiNmQ1NzgyNzk0MjMwNDEyZmQ4MWM5ZWNk
10
+ NmU5YjNkOTViMThjMzIxMTcxOTg0MmRjMTA2Y2JjNmE4NDQzN2I0MWQ4NTg3
11
+ NDUzMjk2Njg4ZjFhNWVjNWJlMGM1Y2Q1Y2IwZjVjY2VhZTU0NjY=
12
12
  data.tar.gz: !binary |-
13
- MDJjZjBkNGFjYWI3Y2I2YWRhNmQzMzk3Y2JiNWU0YzQyYzlkNzMyNDc0Yzky
14
- MjYzYjAwZTYyN2NmYTJhOWY1Y2ViNDQwNjZlYjBlMjM1ZjVhZjk4OTQwMGYy
15
- YzUzZWNjMDQzZWVkMDQ2ZmMzODYyMDkwNDM3NTdjNjMxZWJhODE=
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
- # middleware
9
- class Middleware
10
- # page view wrapper
11
- class PageView < OpenStruct
12
- def initialize
13
- super
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
- def add_custom_metric(position, value)
19
- @custom_metrics << [position, value]
20
- end
15
+ def add_custom_metric(position, value)
16
+ @custom_metrics << [position, value]
17
+ end
21
18
 
22
- def add_custom_dimension(position, value)
23
- @custom_dimensions << [position, value]
24
- end
19
+ def add_custom_dimension(position, value)
20
+ @custom_dimensions << [position, value]
21
+ end
25
22
 
26
- def track!(default_tracker, tracking_id, request)
27
- page_view_params = marshal_dump
28
- if page_view_params[:client_id]
29
- tracker = Staccato.tracker(tracking_id, page_view_params[:client_id])
30
- else
31
- tracker = default_tracker
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
- private
33
+ private
37
34
 
38
- def track_hit(tracker, page_view_params, request)
39
- hit = Staccato::Pageview.new(tracker, page_view_params.merge(path: request.fullpath,
40
- hostname: request.host,
41
- user_agent: request.env['HTTP_USER_AGENT'],
42
- user_ip: request.ip))
43
- add_custom_to_hit(hit)
44
- hit.track!
45
- hit
46
- end
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
- def add_custom_to_hit(hit)
49
- @custom_metrics.each do |p, v|
50
- hit.add_custom_metric(p, v)
51
- end
52
- @custom_dimensions.each do |p, v|
53
- hit.add_custom_dimension(p, v)
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)
@@ -2,6 +2,6 @@
2
2
  module Staccato
3
3
  # rack module
4
4
  module Rack
5
- VERSION = '0.2.0'
5
+ VERSION = '0.3.0'
6
6
  end
7
7
  end
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.2.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-08 00:00:00.000000000 Z
11
+ date: 2015-04-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack