staccato-rails 0.0.1 → 0.1.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 +4 -4
- data/.ruby-version +1 -1
- data/CHANGELOG.md +6 -0
- data/README.md +26 -0
- data/lib/staccato-rails/version.rb +1 -1
- data/lib/staccato/session_tracking.rb +20 -3
- data/lib/staccato/subscribers/page.rb +5 -1
- data/lib/staccato/subscribers/timing.rb +17 -3
- data/spec/lib/staccato/subscribers/page_spec.rb +3 -1
- data/spec/lib/staccato/subscribers/timing_spec.rb +6 -4
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5ffa71cc4564ecb6712bdcc9afb3aef2ea095d4
|
4
|
+
data.tar.gz: 7d60616ef0a17d347d288951f0831cb03ae9948e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea22eab05dfbc4d2992bd90a90c1115d87d0d4c28d885d883c729d9314f000c43da395bb96ab2befddab82d129d2f5c754444657169730ae31c371ec177955e1
|
7
|
+
data.tar.gz: f91310fce5330337318e41d55e49cd51b83bf03c018b5e5b72a821da0e9c11a021eae761d3c2a2b790ab3ad1227629587510ff944695b9e668d193ad4b0c06c2
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.4
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -49,6 +49,8 @@ In controllers, `tracker` is made available to you:
|
|
49
49
|
tracker.event(category: 'video', action: 'play', label: 'cars', value: 1)
|
50
50
|
```
|
51
51
|
|
52
|
+
Note: if you have an existing method named `tracker`, this is also available with the more verbose `staccato_tracker`.
|
53
|
+
|
52
54
|
## Overriding the client_id ##
|
53
55
|
|
54
56
|
A method is added to your controller called `staccato_client_id`. By default, it's implementation looks like:
|
@@ -83,6 +85,30 @@ config.staccato.pageviews = false
|
|
83
85
|
config.staccato.exceptions = false # default
|
84
86
|
```
|
85
87
|
|
88
|
+
## Adding Global and Hit context ##
|
89
|
+
|
90
|
+
To add values like `user_ip` to all hits called by `tracker` (in both your own code, and staccato-rails) create a method `global_context` in your controller and return a hash:
|
91
|
+
|
92
|
+
```ruby
|
93
|
+
def global_context
|
94
|
+
{
|
95
|
+
user_ip: request.remote_ip
|
96
|
+
}
|
97
|
+
end
|
98
|
+
```
|
99
|
+
|
100
|
+
To add values only to the hits sent by staccato-rails (but not your own use of `tracker`) for pageviews and timing create a method `hit_context` in your controller and return a hash:
|
101
|
+
|
102
|
+
```ruby
|
103
|
+
def hit_context
|
104
|
+
{
|
105
|
+
user_agent: "cURL"
|
106
|
+
}
|
107
|
+
end
|
108
|
+
```
|
109
|
+
|
110
|
+
If per-action control over the hits sent to GA is required you're better off just using `Staccato` directly at this point.
|
111
|
+
|
86
112
|
## Contributing
|
87
113
|
|
88
114
|
1. Fork it
|
@@ -1,7 +1,21 @@
|
|
1
1
|
module Staccato
|
2
2
|
module SessionTracking
|
3
|
-
def
|
4
|
-
|
3
|
+
def self.included(controller)
|
4
|
+
controller.class_eval do
|
5
|
+
alias_method :tracker, :staccato_tracker unless defined?(tracker)
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
def global_context
|
10
|
+
{}
|
11
|
+
end
|
12
|
+
|
13
|
+
def hit_context
|
14
|
+
{}
|
15
|
+
end
|
16
|
+
|
17
|
+
def staccato_tracker
|
18
|
+
@staccato_tracker ||= Staccato.tracker(staccato_tracker_id, staccato_client_id, global_context)
|
5
19
|
end
|
6
20
|
|
7
21
|
# pull tracker id from config
|
@@ -14,10 +28,13 @@ module Staccato
|
|
14
28
|
session['staccato.client_id'] ||= Staccato.build_client_id
|
15
29
|
end
|
16
30
|
|
31
|
+
# This is called in an `ensure` block by actionpack
|
32
|
+
# errors raised here _may_ be particularly dangerous
|
17
33
|
def append_info_to_payload(payload)
|
18
34
|
super
|
19
35
|
|
20
|
-
payload["staccato.tracker"] =
|
36
|
+
payload["staccato.tracker"] = staccato_tracker
|
37
|
+
payload["staccato.context"] = hit_context
|
21
38
|
end
|
22
39
|
end
|
23
40
|
end
|
@@ -23,7 +23,7 @@ module Staccato
|
|
23
23
|
|
24
24
|
def track!
|
25
25
|
return unless get?
|
26
|
-
tracker.pageview(path: path, hostname: hostname)
|
26
|
+
tracker.pageview(context.merge(path: path, hostname: hostname))
|
27
27
|
end
|
28
28
|
|
29
29
|
private
|
@@ -39,6 +39,10 @@ module Staccato
|
|
39
39
|
@tracker ||= payload['staccato.tracker']
|
40
40
|
end
|
41
41
|
|
42
|
+
def context
|
43
|
+
@context ||= payload['staccato.context']
|
44
|
+
end
|
45
|
+
|
42
46
|
def path_prefix
|
43
47
|
Rails.application.config.staccato.pageview_prefix.to_s
|
44
48
|
end
|
@@ -21,10 +21,20 @@ module Staccato
|
|
21
21
|
@view_runtime ||= payload[:view_runtime]
|
22
22
|
end
|
23
23
|
|
24
|
+
def times
|
25
|
+
[
|
26
|
+
{label: :total, time: total_runtime},
|
27
|
+
{label: :db, time: db_runtime},
|
28
|
+
{label: :view, time: view_runtime}
|
29
|
+
]
|
30
|
+
end
|
31
|
+
|
24
32
|
def track!
|
25
|
-
|
26
|
-
|
27
|
-
|
33
|
+
params = context.merge(category: :rails, variable: :runtime)
|
34
|
+
|
35
|
+
times.each do |time|
|
36
|
+
tracker.timing(params.merge(time))
|
37
|
+
end
|
28
38
|
end
|
29
39
|
|
30
40
|
private
|
@@ -39,6 +49,10 @@ module Staccato
|
|
39
49
|
def tracker
|
40
50
|
@tracker ||= payload['staccato.tracker']
|
41
51
|
end
|
52
|
+
|
53
|
+
def context
|
54
|
+
@context ||= payload['staccato.context']
|
55
|
+
end
|
42
56
|
end
|
43
57
|
end
|
44
58
|
end
|
@@ -3,6 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Staccato::Subscribers::Page do
|
4
4
|
|
5
5
|
let(:tracker) { Staccato.tracker(nil) }
|
6
|
+
let(:context) { {} }
|
6
7
|
let(:now) {Time.now.to_i}
|
7
8
|
let(:duration) {49}
|
8
9
|
|
@@ -18,7 +19,8 @@ describe Staccato::Subscribers::Page do
|
|
18
19
|
status: 200,
|
19
20
|
view_runtime: 46.848,
|
20
21
|
db_runtime: 0.157,
|
21
|
-
'staccato.tracker' => tracker
|
22
|
+
'staccato.tracker' => tracker,
|
23
|
+
'staccato.context' => context
|
22
24
|
}
|
23
25
|
}
|
24
26
|
|
@@ -3,6 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Staccato::Subscribers::Timing do
|
4
4
|
|
5
5
|
let(:tracker) { Staccato.tracker(nil) }
|
6
|
+
let(:context) { {user_ip: "127.0.0.1"} }
|
6
7
|
let(:now) {Time.now.to_i}
|
7
8
|
let(:duration) {49} # in seconds
|
8
9
|
|
@@ -19,7 +20,8 @@ describe Staccato::Subscribers::Timing do
|
|
19
20
|
status: 200,
|
20
21
|
view_runtime: 46.848, # milliseconds
|
21
22
|
db_runtime: 0.157, # milliseconds
|
22
|
-
'staccato.tracker' => tracker
|
23
|
+
'staccato.tracker' => tracker,
|
24
|
+
'staccato.context' => context
|
23
25
|
}
|
24
26
|
}
|
25
27
|
|
@@ -43,14 +45,14 @@ describe Staccato::Subscribers::Timing do
|
|
43
45
|
it 'tracks total run time' do
|
44
46
|
# convert duration time to milliseconds
|
45
47
|
total_runtime = duration.to_f*1000
|
46
|
-
expect(tracker).to have_received(:timing).with(category: :rails, variable: :runtime, label: :total, time: total_runtime)
|
48
|
+
expect(tracker).to have_received(:timing).with(user_ip: "127.0.0.1", category: :rails, variable: :runtime, label: :total, time: total_runtime)
|
47
49
|
end
|
48
50
|
|
49
51
|
it 'tracks db run time' do
|
50
|
-
expect(tracker).to have_received(:timing).with(category: :rails, variable: :runtime, label: :db, time: 0.157)
|
52
|
+
expect(tracker).to have_received(:timing).with(user_ip: "127.0.0.1", category: :rails, variable: :runtime, label: :db, time: 0.157)
|
51
53
|
end
|
52
54
|
|
53
55
|
it 'tracks view rendering run time' do
|
54
|
-
expect(tracker).to have_received(:timing).with(category: :rails, variable: :runtime, label: :view, time: 46.848)
|
56
|
+
expect(tracker).to have_received(:timing).with(user_ip: "127.0.0.1", category: :rails, variable: :runtime, label: :view, time: 46.848)
|
55
57
|
end
|
56
58
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: staccato-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tony Pitale
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-08-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -177,7 +177,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
177
177
|
version: '0'
|
178
178
|
requirements: []
|
179
179
|
rubyforge_project:
|
180
|
-
rubygems_version: 2.
|
180
|
+
rubygems_version: 2.6.8
|
181
181
|
signing_key:
|
182
182
|
specification_version: 4
|
183
183
|
summary: Rails integration with Staccato for Google Analytics measurement.
|