google-analytics-rails 1.0.0 → 1.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/.travis.yml +4 -1
- data/CHANGELOG.markdown +13 -0
- data/Gemfile +1 -0
- data/README.markdown +22 -11
- data/google-analytics-rails.gemspec +12 -15
- data/lib/google-analytics-rails.rb +22 -6
- data/lib/google-analytics/events/events.rb +4 -3
- data/lib/google-analytics/rails/railtie.rb +13 -7
- data/lib/google-analytics/version.rb +1 -1
- data/test/event_renderer_test.rb +1 -0
- data/test/gaq_events_test.rb +80 -2
- metadata +7 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1026e04facb047892c44b293f01e87c63af110c
|
4
|
+
data.tar.gz: 052fff54d9f1dc5dcb2b9972764bfaac52492f18
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 011c446e38f25ca1fdb7b1eb1079fd584fdca5d79b1ff6141d6943c24d8caf802772241f38af6a3a888db0e25180b8b162146104dbf64d8a0cbfb6f172b4aec0
|
7
|
+
data.tar.gz: c4b798ef8c48bff11a32a9c0f33f4830312fe84560fe0c72ac138abff89c212d83f4306cd03237f6c9c6f5e5708a0c624dfd728af93bab3e040e32f284b8708e
|
data/.travis.yml
CHANGED
data/CHANGELOG.markdown
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
1.1.0
|
2
|
+
=====
|
3
|
+
|
4
|
+
* Added User ID Options [PR#30](https://github.com/bgarret/google-analytics-rails/pull/30)
|
5
|
+
* Added Premium Account flag [PR#31](https://github.com/bgarret/google-analytics-rails/pull/31)
|
6
|
+
* Added Custom Metrics & Dimensions 0-20/0-200 [PR#31](https://github.com/bgarret/google-analytics-rails/pull/31)
|
7
|
+
* Removed support for Ruby 1.8.7
|
8
|
+
|
9
|
+
1.0.0
|
10
|
+
=====
|
11
|
+
|
12
|
+
* Moved to Universal Analytics
|
13
|
+
|
1
14
|
0.0.6
|
2
15
|
=====
|
3
16
|
|
data/Gemfile
CHANGED
data/README.markdown
CHANGED
@@ -9,7 +9,7 @@ Installation
|
|
9
9
|
|
10
10
|
Add the following to your `Gemfile`:
|
11
11
|
|
12
|
-
gem 'google-analytics-rails', '1.
|
12
|
+
gem 'google-analytics-rails', '1.1.0'
|
13
13
|
|
14
14
|
Then run:
|
15
15
|
|
@@ -52,11 +52,11 @@ Production only
|
|
52
52
|
`config/environments/production.rb`:
|
53
53
|
|
54
54
|
# replace this with your tracker code
|
55
|
-
GA.tracker = "UA-
|
55
|
+
GA.tracker = "UA-112233-4"
|
56
56
|
|
57
57
|
`app/views/layout/application.html.erb`, in the `<head>` tag :
|
58
58
|
|
59
|
-
<%= analytics_init if
|
59
|
+
<%= analytics_init if GoogleAnalytics.valid_tracker? %>
|
60
60
|
|
61
61
|
With DoubleClick instead of vanilla Google Analytics script
|
62
62
|
-----------------------------------------------------------
|
@@ -64,29 +64,40 @@ With DoubleClick instead of vanilla Google Analytics script
|
|
64
64
|
`config/environments/production.rb`:
|
65
65
|
|
66
66
|
# replace this with your tracker code
|
67
|
-
GA.tracker = "UA-
|
67
|
+
GA.tracker = "UA-556677-8"
|
68
68
|
GA.script_source = :doubleclick
|
69
69
|
|
70
70
|
`app/views/layout/application.html.erb`, in the `<head>` tag :
|
71
71
|
|
72
|
-
<%= analytics_init if
|
72
|
+
<%= analytics_init if GoogleAnalytics.valid_tracker? %>
|
73
73
|
|
74
|
-
Different accounts for
|
74
|
+
Different accounts for staging and production
|
75
75
|
-------------------------------------------------
|
76
76
|
|
77
77
|
`config/environments/production.rb`:
|
78
78
|
|
79
79
|
# replace this with your production tracker code
|
80
|
-
GA.tracker = "UA-
|
80
|
+
GA.tracker = "UA-990011-2"
|
81
81
|
|
82
|
-
`config/environments/
|
82
|
+
`config/environments/staging.rb`:
|
83
83
|
|
84
|
-
# replace this with your
|
85
|
-
GA.tracker = "UA-
|
84
|
+
# replace this with your staging tracker code
|
85
|
+
GA.tracker = "UA-334455-66"
|
86
86
|
|
87
87
|
`app/views/layout/application.html.erb`, in the `<head>` tag :
|
88
88
|
|
89
|
-
<%= analytics_init
|
89
|
+
<%= analytics_init if GoogleAnalytics.valid_tracker? %>
|
90
|
+
|
91
|
+
Premium Google Analytics accounts
|
92
|
+
---------------------------------
|
93
|
+
|
94
|
+
`config/environments/production.rb`:
|
95
|
+
|
96
|
+
# add this if you have a premium account and need to use the additional dimension/metric indices
|
97
|
+
# - premium accounts are allowed to have 200 custom dimensions/metrics
|
98
|
+
# - regular accounts are allowed 20
|
99
|
+
# see also: https://support.google.com/analytics/answer/2709828?hl=en#Limits
|
100
|
+
GA.premium_account = true
|
90
101
|
|
91
102
|
License
|
92
103
|
=======
|
@@ -3,19 +3,16 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
require "google-analytics/version"
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
|
-
s.name
|
7
|
-
s.version
|
8
|
-
s.platform
|
9
|
-
s.authors
|
10
|
-
s.email
|
11
|
-
s.homepage
|
12
|
-
s.summary
|
13
|
-
s.description
|
14
|
-
|
15
|
-
s.
|
16
|
-
|
17
|
-
s.
|
18
|
-
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
-
s.require_paths = ["lib"]
|
6
|
+
s.name = "google-analytics-rails"
|
7
|
+
s.version = GoogleAnalytics::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Benoit Garret", "Ufuk Kayserilioglu"]
|
10
|
+
s.email = ["benoit.garret@gadz.org", "ufuk@paralaus.com"]
|
11
|
+
s.homepage = "https://github.com/bgarret/google-analytics-rails"
|
12
|
+
s.summary = %q{Rails helpers to manage google analytics tracking}
|
13
|
+
s.description = %q{Rails helpers to manage google analytics tracking}
|
14
|
+
s.required_ruby_version = '>= 1.9.3'
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.test_files = `git ls-files -- {test}/*`.split("\n")
|
17
|
+
s.require_paths = ["lib"]
|
21
18
|
end
|
@@ -15,6 +15,10 @@ module GoogleAnalytics
|
|
15
15
|
:default => "'//www.google-analytics.com/analytics.js'",
|
16
16
|
:doubleclick => "'//stats.g.doubleclick.net/dc.js'",
|
17
17
|
}
|
18
|
+
# @private
|
19
|
+
MAX_REGULAR_INDICES = 20
|
20
|
+
# @private
|
21
|
+
MAX_PREMIUM_INDICES = 200
|
18
22
|
|
19
23
|
# Get the current tracker id (*UA-xxxxxx-x*).
|
20
24
|
# @return [String]
|
@@ -47,14 +51,26 @@ module GoogleAnalytics
|
|
47
51
|
@@src = src
|
48
52
|
end
|
49
53
|
end
|
54
|
+
|
55
|
+
# @return [Boolean]
|
56
|
+
def self.premium_account?
|
57
|
+
@@premium_account ||= false
|
58
|
+
end
|
59
|
+
|
60
|
+
# Set whether or not the property is held under a premium account
|
61
|
+
# @param [Boolean]
|
62
|
+
def self.premium_account=(value)
|
63
|
+
@@premium_account = value
|
64
|
+
end
|
65
|
+
|
66
|
+
# Return the maximum number of custom dimension/metric indices for this type of account
|
67
|
+
# @return [Integer]
|
68
|
+
def self.max_custom_indices
|
69
|
+
premium_account? ? MAX_PREMIUM_INDICES : MAX_REGULAR_INDICES
|
70
|
+
end
|
50
71
|
end
|
51
72
|
|
52
73
|
# Alias for {GoogleAnalytics}
|
53
74
|
GA = GoogleAnalytics
|
54
75
|
|
55
|
-
|
56
|
-
require 'google-analytics/rails/railtie'
|
57
|
-
|
58
|
-
# Alias for {GoogleAnalytics::Rails}
|
59
|
-
GAR = GoogleAnalytics::Rails
|
60
|
-
end
|
76
|
+
require 'google-analytics/rails/railtie'
|
@@ -23,7 +23,8 @@ module GoogleAnalytics
|
|
23
23
|
:cookieExpires => opts.delete(:cookieExpires),
|
24
24
|
:sampleRate => opts.delete(:sampleRate),
|
25
25
|
:siteSpeedSampleRate => opts.delete(:siteSpeedSampleRate),
|
26
|
-
:name => opts.delete(:name)
|
26
|
+
:name => opts.delete(:name),
|
27
|
+
:userId => opts.delete(:userId) || opts.delete(:uid)
|
27
28
|
}.reject{|k,v| !v }
|
28
29
|
end
|
29
30
|
end
|
@@ -124,13 +125,13 @@ module GoogleAnalytics
|
|
124
125
|
|
125
126
|
class SetCustomDimension < Event
|
126
127
|
def initialize(index, value)
|
127
|
-
raise ArgumentError, "The index has to be between 1 and
|
128
|
+
raise ArgumentError, "The index has to be between 1 and #{GA.max_custom_indices}" unless (1..GA.max_custom_indices).include?(index.to_i)
|
128
129
|
super('set', "dimension#{index}", value.to_s)
|
129
130
|
end
|
130
131
|
end
|
131
132
|
class SetCustomMetric < Event
|
132
133
|
def initialize(index, value)
|
133
|
-
raise ArgumentError, "The index has to be between 1 and
|
134
|
+
raise ArgumentError, "The index has to be between 1 and #{GA.max_custom_indices}" unless (1..GA.max_custom_indices).include?(index.to_i)
|
134
135
|
super('set', "metric#{index}", value.to_s)
|
135
136
|
end
|
136
137
|
end
|
@@ -1,12 +1,18 @@
|
|
1
1
|
# coding: utf-8
|
2
|
+
begin
|
3
|
+
require 'rails/railtie'
|
4
|
+
rescue LoadError
|
5
|
+
else
|
6
|
+
require 'google-analytics/rails/view_helpers'
|
2
7
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
ActionView::Base.send :include, ViewHelpers
|
8
|
+
module GoogleAnalytics::Rails
|
9
|
+
# @private
|
10
|
+
class Railtie < ::Rails::Railtie
|
11
|
+
initializer 'google-analytics-rails' do
|
12
|
+
ActionView::Base.send :include, ViewHelpers
|
13
|
+
end
|
10
14
|
end
|
11
15
|
end
|
16
|
+
# Alias for {GoogleAnalytics::Rails}
|
17
|
+
GAR = GoogleAnalytics::Rails
|
12
18
|
end
|
data/test/event_renderer_test.rb
CHANGED
@@ -10,6 +10,7 @@ class EventRendererTest < Test::Unit::TestCase
|
|
10
10
|
er = GA::EventRenderer.new(GA::Event.new('send', 'something', 1, 2, 3), 't2')
|
11
11
|
assert_equal("ga('t2.send','something',1,2,3);", er.to_s)
|
12
12
|
end
|
13
|
+
|
13
14
|
def test_event_renderer_yield_proper_javascript_snippit_for_custom_tracker_creation
|
14
15
|
er = GA::EventRenderer.new(GA::Events::SetupAnalytics.new('TEST', {:name => 't2'}), 't2')
|
15
16
|
assert_match(Regexp.new('"cookieDomain":"auto"'), er.to_s)
|
data/test/gaq_events_test.rb
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class GAEventsTest < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
GA.premium_account = false
|
6
|
+
end
|
7
|
+
|
4
8
|
def test_default_account_creation
|
5
9
|
event = GA::Events::SetupAnalytics.new('ABC123')
|
6
10
|
assert_equal('create', event.action)
|
@@ -13,6 +17,21 @@ class GAEventsTest < Test::Unit::TestCase
|
|
13
17
|
assert_equal('ABC123', event.name)
|
14
18
|
assert_equal([{:cookieDomain=>"example.com"}], event.params)
|
15
19
|
end
|
20
|
+
|
21
|
+
def test_account_creation_with_user_id
|
22
|
+
event = GA::Events::SetupAnalytics.new('ABC123', {:cookieDomain => 'example.com', :userId => 10})
|
23
|
+
assert_equal('create', event.action)
|
24
|
+
assert_equal('ABC123', event.name)
|
25
|
+
assert_equal([{:cookieDomain=>"example.com", :userId => 10}], event.params)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_account_creation_with_using_uid_for_user
|
29
|
+
event = GA::Events::SetupAnalytics.new('ABC123', {:cookieDomain => 'example.com', :uid => 10})
|
30
|
+
assert_equal('create', event.action)
|
31
|
+
assert_equal('ABC123', event.name)
|
32
|
+
assert_equal([{:cookieDomain=>"example.com", :userId => 10}], event.params)
|
33
|
+
end
|
34
|
+
|
16
35
|
def test_account_creation_with_no_cookie_domain
|
17
36
|
event = GA::Events::SetupAnalytics.new('ABC123', 'none')
|
18
37
|
assert_equal('create', event.action)
|
@@ -69,6 +88,25 @@ class GAEventsTest < Test::Unit::TestCase
|
|
69
88
|
assert_equal(['Search', 'Executed', 'Son of Sam', 1], event.params)
|
70
89
|
end
|
71
90
|
|
91
|
+
def test_max_custom_indices_regular
|
92
|
+
assert_equal(GA::MAX_REGULAR_INDICES, GA.max_custom_indices)
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_premium_account_defaults_to_false
|
96
|
+
GA.premium_account = nil
|
97
|
+
assert_equal(false, GA.premium_account?)
|
98
|
+
end
|
99
|
+
|
100
|
+
def test_max_custom_indices_defaults_to_regular
|
101
|
+
GA.premium_account = nil
|
102
|
+
assert_equal(GA::MAX_REGULAR_INDICES, GA.max_custom_indices)
|
103
|
+
end
|
104
|
+
|
105
|
+
def test_max_custom_indices_premium
|
106
|
+
GA.premium_account = true
|
107
|
+
assert_equal(GA::MAX_PREMIUM_INDICES, GA.max_custom_indices)
|
108
|
+
end
|
109
|
+
|
72
110
|
def test_set_custom_dimension
|
73
111
|
event = GA::Events::SetCustomDimension.new(1, 2)
|
74
112
|
assert_equal('set', event.action)
|
@@ -76,9 +114,29 @@ class GAEventsTest < Test::Unit::TestCase
|
|
76
114
|
assert_equal(['2'], event.params)
|
77
115
|
end
|
78
116
|
|
117
|
+
def test_set_max_custom_dimension
|
118
|
+
assert_nothing_raised do
|
119
|
+
GA::Events::SetCustomDimension.new(GA::MAX_REGULAR_INDICES, 1)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
79
123
|
def test_set_custom_dimension_with_invalid_index
|
80
124
|
assert_raise ArgumentError do
|
81
|
-
GA::Events::SetCustomDimension.new(
|
125
|
+
GA::Events::SetCustomDimension.new(GA::MAX_REGULAR_INDICES + 1, 1)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
def test_set_max_custom_dimension_premium_account
|
130
|
+
GA.premium_account = true
|
131
|
+
assert_nothing_raised do
|
132
|
+
GA::Events::SetCustomDimension.new(GA::MAX_PREMIUM_INDICES, 1)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_set_custom_dimension_with_invalid_index_premium_account
|
137
|
+
GA.premium_account = true
|
138
|
+
assert_raise ArgumentError do
|
139
|
+
GA::Events::SetCustomDimension.new(GA::MAX_PREMIUM_INDICES + 1, 1)
|
82
140
|
end
|
83
141
|
end
|
84
142
|
|
@@ -89,9 +147,29 @@ class GAEventsTest < Test::Unit::TestCase
|
|
89
147
|
assert_equal(['2'], event.params)
|
90
148
|
end
|
91
149
|
|
150
|
+
def test_set_max_custom_metric
|
151
|
+
assert_nothing_raised do
|
152
|
+
GA::Events::SetCustomMetric.new(GA::MAX_REGULAR_INDICES, 1)
|
153
|
+
end
|
154
|
+
end
|
155
|
+
|
92
156
|
def test_set_custom_metric_with_invalid_index
|
93
157
|
assert_raise ArgumentError do
|
94
|
-
GA::Events::SetCustomMetric.new(
|
158
|
+
GA::Events::SetCustomMetric.new(GA::MAX_REGULAR_INDICES + 1, 1)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
def test_set_max_custom_metric_premium_account
|
163
|
+
GA.premium_account = true
|
164
|
+
assert_nothing_raised do
|
165
|
+
GA::Events::SetCustomDimension.new(GA::MAX_PREMIUM_INDICES, 1)
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
def test_set_custom_metric_with_invalid_index_premium_account
|
170
|
+
GA.premium_account = true
|
171
|
+
assert_raise ArgumentError do
|
172
|
+
GA::Events::SetCustomDimension.new(GA::MAX_PREMIUM_INDICES + 1, 1)
|
95
173
|
end
|
96
174
|
end
|
97
175
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: google-analytics-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benoit Garret
|
@@ -9,9 +9,9 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-02-27 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
|
-
description: Rails
|
14
|
+
description: Rails helpers to manage google analytics tracking
|
15
15
|
email:
|
16
16
|
- benoit.garret@gadz.org
|
17
17
|
- ufuk@paralaus.com
|
@@ -56,24 +56,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
56
56
|
requirements:
|
57
57
|
- - ">="
|
58
58
|
- !ruby/object:Gem::Version
|
59
|
-
version:
|
59
|
+
version: 1.9.3
|
60
60
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
61
|
requirements:
|
62
62
|
- - ">="
|
63
63
|
- !ruby/object:Gem::Version
|
64
64
|
version: '0'
|
65
65
|
requirements: []
|
66
|
-
rubyforge_project:
|
66
|
+
rubyforge_project:
|
67
67
|
rubygems_version: 2.4.8
|
68
68
|
signing_key:
|
69
69
|
specification_version: 4
|
70
|
-
summary: Rails
|
71
|
-
test_files:
|
72
|
-
- test/async_tracking_queue_test.rb
|
73
|
-
- test/event_collection_renderer_test.rb
|
74
|
-
- test/event_collection_test.rb
|
75
|
-
- test/event_renderer_test.rb
|
76
|
-
- test/gaq_events_test.rb
|
77
|
-
- test/rails/views_helper_test.rb
|
78
|
-
- test/test_helper.rb
|
70
|
+
summary: Rails helpers to manage google analytics tracking
|
71
|
+
test_files: []
|
79
72
|
has_rdoc:
|