gabba 0.3.0 → 0.4.1
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.
- data/Gemfile.lock +1 -1
- data/Rakefile +2 -0
- data/Readme.md +67 -0
- data/lib/gabba/gabba.rb +8 -7
- data/lib/gabba/version.rb +1 -1
- data/spec/gabba_spec.rb +8 -1
- metadata +41 -22
- data/README +0 -56
data/Gemfile.lock
CHANGED
data/Rakefile
CHANGED
data/Readme.md
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
# Gabba
|
2
|
+
|
3
|
+
Simple class to send custom server-side events to Google Analytics
|
4
|
+
|
5
|
+
Heavily influenced by the http://code.google.com/p/serversidegoogleanalytics
|
6
|
+
|
7
|
+
## Examples
|
8
|
+
|
9
|
+
### Track page views
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
Gabba::Gabba.new("UT-1234", "mydomain.com").page_view("something", "track/me")
|
13
|
+
```
|
14
|
+
|
15
|
+
### Track custom events
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
Gabba::Gabba.new("UT-1234", "mydomain.com").event("Videos", "Play", "ID", "123", true)
|
19
|
+
```
|
20
|
+
|
21
|
+
### Works with existing client-side Google Analytics cookies
|
22
|
+
|
23
|
+
```ruby
|
24
|
+
gabba = Gabba::Gabba.new("UT-1234", "mydomain.com")
|
25
|
+
|
26
|
+
# grab the __utma and (optionally) __utmz unique identifiers
|
27
|
+
gabba.identify_user(cookies[:__utma], cookies[:__utmz])
|
28
|
+
|
29
|
+
# trigger actions as normal
|
30
|
+
gabba.page_view("something", "track/me")
|
31
|
+
```
|
32
|
+
|
33
|
+
### Setting custom vars
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
# Index: 1 through 5
|
37
|
+
index = 1
|
38
|
+
|
39
|
+
# Scope: VISITOR, SESSION or PAGE
|
40
|
+
scope = Gabba::Gabba::VISITOR
|
41
|
+
|
42
|
+
# Set var
|
43
|
+
gabba.set_custom_var(index, 'Name', 'Value', scope)
|
44
|
+
|
45
|
+
# Track the event (all vars will be included)
|
46
|
+
gabba.event(...)
|
47
|
+
|
48
|
+
# Track the page view (all vars will be included)
|
49
|
+
gabba.page_view(...)
|
50
|
+
```
|
51
|
+
|
52
|
+
### Removing custom vars
|
53
|
+
|
54
|
+
```ruby
|
55
|
+
# Index: 1 through 5
|
56
|
+
index = 1
|
57
|
+
|
58
|
+
# Delete var with this index
|
59
|
+
gabba.delete_custom_var index
|
60
|
+
```
|
61
|
+
|
62
|
+
### Track ecommerce transactions
|
63
|
+
|
64
|
+
```ruby
|
65
|
+
g = Gabba::Gabba.new("UT-6666", "myawesomeshop.net")
|
66
|
+
g.transaction("123456789", "1000.00", 'Acme Clothing', '1.29', '5.00', 'Los Angeles', 'California', 'USA')
|
67
|
+
```
|
data/lib/gabba/gabba.rb
CHANGED
@@ -22,7 +22,7 @@ module Gabba
|
|
22
22
|
|
23
23
|
ESCAPES = %w{ ' ! * ) }
|
24
24
|
|
25
|
-
attr_accessor :utmwv, :utmn, :utmhn, :utmcs, :utmul, :utmdt, :utmp, :utmac, :utmt, :utmcc, :user_agent
|
25
|
+
attr_accessor :utmwv, :utmn, :utmhn, :utmcs, :utmul, :utmdt, :utmp, :utmac, :utmt, :utmcc, :user_agent, :utma, :utmz
|
26
26
|
|
27
27
|
# Public: Initialize Gabba Google Analytics Tracking Object.
|
28
28
|
#
|
@@ -279,25 +279,26 @@ module Gabba
|
|
279
279
|
}
|
280
280
|
end
|
281
281
|
|
282
|
-
# Public: provide the user's __utma
|
282
|
+
# Public: provide the user's __utma and __utmz attributes from analytics cookie, allowing
|
283
283
|
# better tracking of user flows
|
284
284
|
#
|
285
285
|
# Called before page_view etc
|
286
286
|
#
|
287
287
|
# Examples:
|
288
288
|
# g = Gabba::Gabba.new("UT-1234", "mydomain.com")
|
289
|
-
# g.identify_user(cookies[:__utma])
|
289
|
+
# g.identify_user(cookies[:__utma], cookies[:__utmz])
|
290
290
|
# g.page_view("something", "track/me")
|
291
291
|
#
|
292
|
-
def identify_user(utma)
|
292
|
+
def identify_user(utma, utmz=nil)
|
293
293
|
@utma = utma
|
294
|
+
@utmz = utmz
|
294
295
|
end
|
295
296
|
|
296
297
|
# create magical cookie params used by GA for its own nefarious purposes
|
297
298
|
def cookie_params(utma1 = random_id, utma2 = rand(1147483647) + 1000000000, today = Time.now)
|
298
|
-
utma
|
299
|
-
|
300
|
-
"__utma=#{utma};+__utmz
|
299
|
+
@utma ||= "1.#{utma1}00145214523.#{utma2}.#{today.to_i}.#{today.to_i}.15"
|
300
|
+
@utmz ||= "1.#{today.to_i}.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)"
|
301
|
+
"__utma=#{@utma};+__utmz=#{@utmz};"
|
301
302
|
end
|
302
303
|
|
303
304
|
# sanity check that we have needed params to even call GA
|
data/lib/gabba/version.rb
CHANGED
data/spec/gabba_spec.rb
CHANGED
@@ -113,7 +113,14 @@ describe Gabba::Gabba do
|
|
113
113
|
# This is how the Google cookie is named
|
114
114
|
cookies = { :__utma => "long_code"}
|
115
115
|
@gabba.identify_user(cookies[:__utma])
|
116
|
-
@gabba.cookie_params.must_match
|
116
|
+
@gabba.cookie_params.must_match(/utma=long_code;/)
|
117
|
+
@gabba.cookie_params.must_match(/utmz=.*direct.*;/)
|
118
|
+
end
|
119
|
+
it "must use the optionally supplied utmz in cookie_params" do
|
120
|
+
cookies = { :__utma => "long_code", :__utmz => "utmz_code" }
|
121
|
+
@gabba.identify_user(cookies[:__utma], cookies[:__utmz])
|
122
|
+
@gabba.cookie_params.must_match(/utma=long_code;/)
|
123
|
+
@gabba.cookie_params.must_match(/utmz=utmz_code;/)
|
117
124
|
end
|
118
125
|
end
|
119
126
|
|
metadata
CHANGED
@@ -1,58 +1,77 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: gabba
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 13
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 4
|
9
|
+
- 1
|
10
|
+
version: 0.4.1
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Ron Evans
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
17
|
+
|
18
|
+
date: 2012-10-20 00:00:00 Z
|
13
19
|
dependencies: []
|
20
|
+
|
14
21
|
description: Easy server-side tracking for Google Analytics
|
15
|
-
email:
|
22
|
+
email:
|
16
23
|
- ron dot evans at gmail dot com
|
17
24
|
executables: []
|
25
|
+
|
18
26
|
extensions: []
|
27
|
+
|
19
28
|
extra_rdoc_files: []
|
20
|
-
|
29
|
+
|
30
|
+
files:
|
21
31
|
- .gitignore
|
22
32
|
- Gemfile
|
23
33
|
- Gemfile.lock
|
24
|
-
- README
|
25
34
|
- Rakefile
|
35
|
+
- Readme.md
|
26
36
|
- gabba.gemspec
|
27
37
|
- lib/gabba.rb
|
28
38
|
- lib/gabba/gabba.rb
|
29
39
|
- lib/gabba/version.rb
|
30
40
|
- spec/gabba_spec.rb
|
31
41
|
- spec/spec_helper.rb
|
32
|
-
homepage:
|
42
|
+
homepage: ""
|
33
43
|
licenses: []
|
44
|
+
|
34
45
|
post_install_message:
|
35
46
|
rdoc_options: []
|
36
|
-
|
47
|
+
|
48
|
+
require_paths:
|
37
49
|
- lib
|
38
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
39
51
|
none: false
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
44
|
-
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
hash: 3
|
56
|
+
segments:
|
57
|
+
- 0
|
58
|
+
version: "0"
|
59
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
45
60
|
none: false
|
46
|
-
requirements:
|
47
|
-
- -
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
|
61
|
+
requirements:
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
hash: 3
|
65
|
+
segments:
|
66
|
+
- 0
|
67
|
+
version: "0"
|
50
68
|
requirements: []
|
69
|
+
|
51
70
|
rubyforge_project: gabba
|
52
|
-
rubygems_version: 1.8.
|
71
|
+
rubygems_version: 1.8.24
|
53
72
|
signing_key:
|
54
73
|
specification_version: 3
|
55
74
|
summary: Easy server-side tracking for Google Analytics
|
56
|
-
test_files:
|
75
|
+
test_files:
|
57
76
|
- spec/gabba_spec.rb
|
58
77
|
- spec/spec_helper.rb
|
data/README
DELETED
@@ -1,56 +0,0 @@
|
|
1
|
-
Simple class to send custom server-side events to Google Analytics
|
2
|
-
==================================================================
|
3
|
-
|
4
|
-
Heavily influenced by the http://code.google.com/p/serversidegoogleanalytics
|
5
|
-
|
6
|
-
HOW TO USE:
|
7
|
-
-----------
|
8
|
-
|
9
|
-
* Track page views
|
10
|
-
|
11
|
-
Gabba::Gabba.new("UT-1234", "mydomain.com").page_view("something", "track/me")
|
12
|
-
|
13
|
-
* Track custom events
|
14
|
-
|
15
|
-
Gabba::Gabba.new("UT-1234", "mydomain.com").event("Videos", "Play", "ID", "123", true)
|
16
|
-
|
17
|
-
* Works with existing client-side Google Analytics cookies
|
18
|
-
|
19
|
-
gabba = Gabba::Gabba.new("UT-1234", "mydomain.com")
|
20
|
-
|
21
|
-
# grab the __utma unique identifier
|
22
|
-
gabba.identify_user(cookies[:__utma])
|
23
|
-
|
24
|
-
# trigger actions as normal
|
25
|
-
gabba.page_view("something", "track/me")
|
26
|
-
|
27
|
-
* Setting custom vars
|
28
|
-
|
29
|
-
# Index: 1 through 5
|
30
|
-
index = 1
|
31
|
-
|
32
|
-
# Scope: VISITOR, SESSION or PAGE
|
33
|
-
scope = Gabba::Gabba::VISITOR
|
34
|
-
|
35
|
-
# Set var
|
36
|
-
gabba.set_custom_var(index, 'Name', 'Value', scope)
|
37
|
-
|
38
|
-
# Track the event (all vars will be included)
|
39
|
-
gabba.event(...)
|
40
|
-
|
41
|
-
# Track the page view (all vars will be included)
|
42
|
-
gabba.page_view(...)
|
43
|
-
|
44
|
-
* Removing custom vars
|
45
|
-
|
46
|
-
# Index: 1 through 5
|
47
|
-
index = 1
|
48
|
-
|
49
|
-
# Delete var with this index
|
50
|
-
gabba.delete_custom_var index- Track a non-interactive custom event
|
51
|
-
|
52
|
-
* Track ecommerce transactions
|
53
|
-
|
54
|
-
g = Gabba::Gabba.new("UT-6666", "myawesomeshop.net")
|
55
|
-
g.transaction("123456789", "1000.00", 'Acme Clothing', '1.29', '5.00', 'Los Angeles', 'California', 'USA')
|
56
|
-
|