middleman-google-analytics 0.1.1 → 1.0.0.pre
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 +5 -2
- data/CHANGELOG.md +6 -3
- data/Gemfile +7 -7
- data/README.md +20 -24
- data/Rakefile +2 -2
- data/features/helper.feature +42 -21
- data/features/support/env.rb +2 -2
- data/features/universal.feature +44 -23
- data/lib/middleman-google-analytics.rb +2 -6
- data/lib/middleman-google-analytics/analytics.js.erb +17 -0
- data/lib/middleman-google-analytics/extension.rb +35 -52
- data/lib/middleman-google-analytics/ga.js.erb +18 -0
- data/lib/middleman-google-analytics/version.rb +1 -1
- data/middleman-google-analytics.gemspec +15 -17
- metadata +27 -11
- data/lib/middleman_extension.rb +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: da21cec1aa7ac06146c3b1871e0badfd4fd4035d
|
4
|
+
data.tar.gz: fd559943bcb465f07197f18518698dbbcf0a2e56
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d26e3849ab9f52348391adcbe552c1c0b41d65d7cf958ef151882da63ffdd07ee79962ca424bd8455f7eeae8eacb1da0bc0d5c0ef0b7a86f6337710202fe470d
|
7
|
+
data.tar.gz: 9162a558e071d855b19dd2e3533d1471f3bde5e02db65dd333b2a8c5f2d213cd463165290900673fc0e684605a124ae767e0d82fc9ca666e615fe3ff23b4ec90
|
data/.travis.yml
CHANGED
@@ -1,14 +1,17 @@
|
|
1
1
|
language: ruby
|
2
2
|
|
3
3
|
rvm:
|
4
|
-
-
|
5
|
-
- 2.
|
4
|
+
- ruby-head
|
5
|
+
- 2.1.1
|
6
6
|
- 2.1.0
|
7
|
+
- 2.0.0
|
8
|
+
- 1.9.3
|
7
9
|
- jruby-19mode
|
8
10
|
|
9
11
|
# Bug in jRuby w/ Rouge: https://github.com/jruby/jruby/issues/1392
|
10
12
|
matrix:
|
11
13
|
allow_failures:
|
14
|
+
- rvm: ruby-head
|
12
15
|
- rvm: jruby-19mode
|
13
16
|
|
14
17
|
script: "bundle exec rake test"
|
data/CHANGELOG.md
CHANGED
@@ -2,20 +2,23 @@
|
|
2
2
|
|
3
3
|
## HEAD (???)
|
4
4
|
|
5
|
+
* Refactoring Middleman::GoogleAnalytics.
|
6
|
+
* No longer compatible with Middleman < 3.2.
|
7
|
+
* Require Ruby 1.9.3 or greater.
|
8
|
+
* Development option for tracking in development environment.
|
9
|
+
* Minify option for compress the JavaScript code.
|
10
|
+
|
5
11
|
## 0.1.1 (2014-04-20)
|
6
12
|
|
7
13
|
* Fix Universal Analytics code.
|
8
14
|
|
9
15
|
## 0.1.0 (2014-04-16)
|
10
16
|
|
11
|
-
* Add Cucumber tests.
|
12
17
|
* Add Universal Analytics support.
|
13
|
-
* Cleanup README.
|
14
18
|
|
15
19
|
## 0.0.3 (2014-01-07)
|
16
20
|
|
17
21
|
* Add license info to gemspec.
|
18
|
-
* Add project status info to README.
|
19
22
|
|
20
23
|
## 0.0.2 (2013-10-16)
|
21
24
|
|
data/Gemfile
CHANGED
@@ -4,14 +4,14 @@ source 'https://rubygems.org'
|
|
4
4
|
gemspec
|
5
5
|
|
6
6
|
group :development do
|
7
|
-
gem
|
8
|
-
gem
|
9
|
-
gem
|
7
|
+
gem 'rake'
|
8
|
+
gem 'rdoc'
|
9
|
+
gem 'yard'
|
10
10
|
end
|
11
11
|
|
12
12
|
group :test do
|
13
|
-
gem
|
14
|
-
gem
|
15
|
-
gem
|
16
|
-
gem
|
13
|
+
gem 'cucumber'
|
14
|
+
gem 'fivemat', :github => 'tpope/fivemat'
|
15
|
+
gem 'aruba'
|
16
|
+
gem 'rspec'
|
17
17
|
end
|
data/README.md
CHANGED
@@ -23,7 +23,7 @@ keeps your config in `config.rb`, where it belongs.
|
|
23
23
|
```ruby
|
24
24
|
# config.rb
|
25
25
|
activate :google_analytics do |ga|
|
26
|
-
ga.tracking_id = 'UA-XXXXXXX-X'
|
26
|
+
ga.tracking_id = 'UA-XXXXXXX-X' # Replace with your property ID.
|
27
27
|
end
|
28
28
|
```
|
29
29
|
|
@@ -45,12 +45,12 @@ keeps your config in `config.rb`, where it belongs.
|
|
45
45
|
**ERB:**
|
46
46
|
|
47
47
|
```erb
|
48
|
-
|
48
|
+
# Google Analytics
|
49
49
|
<%= google_analytics_tag %>
|
50
50
|
```
|
51
51
|
|
52
52
|
```erb
|
53
|
-
|
53
|
+
# Universal Analytics
|
54
54
|
<%= google_analytics_universal_tag %>
|
55
55
|
```
|
56
56
|
|
@@ -58,31 +58,26 @@ keeps your config in `config.rb`, where it belongs.
|
|
58
58
|
|
59
59
|
```ruby
|
60
60
|
activate :google_analytics do |ga|
|
61
|
-
|
62
|
-
ga.
|
63
|
-
ga.anonymize_ip = true # removing the last octet of the IP address
|
64
|
-
ga.domain_name = 'example.com' # Track for (cross-domain tracking)
|
65
|
-
ga.allow_linker = true # Multiple top-level domains (needs domain_name to be set)
|
66
|
-
end
|
67
|
-
```
|
61
|
+
# Property ID (default = nil)
|
62
|
+
ga.tracking_id = 'UA-XXXXXXX-X'
|
68
63
|
|
69
|
-
|
64
|
+
# Removing the last octet of the IP address (default = false)
|
65
|
+
ga.anonymize_ip = false
|
70
66
|
|
71
|
-
|
72
|
-
|
73
|
-
`config.rb`:
|
67
|
+
# Tracking across a domain and its subdomains (default = nil)
|
68
|
+
ga.domain_name = 'example.com'
|
74
69
|
|
75
|
-
|
76
|
-
|
77
|
-
activate :google_analytics do |ga|
|
78
|
-
ga.tracking_id = false
|
79
|
-
end
|
80
|
-
end
|
70
|
+
# Tracking across multiple domains and subdomains (default = false)
|
71
|
+
ga.allow_linker = false
|
81
72
|
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
73
|
+
# Tracking Code Debugger (default = false)
|
74
|
+
ga.debug = false
|
75
|
+
|
76
|
+
# Tracking in development environment (default = true)
|
77
|
+
ga.development = true
|
78
|
+
|
79
|
+
# Compress the JavaScript code (default = false)
|
80
|
+
ga.minify = false
|
86
81
|
end
|
87
82
|
```
|
88
83
|
|
@@ -97,6 +92,7 @@ display the GA tracking code.
|
|
97
92
|
* For the initial code.
|
98
93
|
* [Atsushi Nagase (@ngs)](https://github.com/ngs)
|
99
94
|
* Cucumber tests and "Universal Analytics" support.
|
95
|
+
* [Contributors](../../graphs/contributors)
|
100
96
|
|
101
97
|
## Contributing
|
102
98
|
|
data/Rakefile
CHANGED
data/features/helper.feature
CHANGED
@@ -6,7 +6,6 @@ Feature: Google Analytics tag helper
|
|
6
6
|
"""
|
7
7
|
activate :google_analytics do |ga|
|
8
8
|
ga.tracking_id = 'UA-123456-78'
|
9
|
-
ga.debug = false
|
10
9
|
end
|
11
10
|
"""
|
12
11
|
Given the Server is running at "test-app"
|
@@ -50,16 +49,13 @@ Feature: Google Analytics tag helper
|
|
50
49
|
</script>
|
51
50
|
"""
|
52
51
|
|
53
|
-
Scenario:
|
52
|
+
Scenario: Tracking across a domain and its subdomains
|
54
53
|
Given a fixture app "test-app"
|
55
54
|
And a file named "config.rb" with:
|
56
55
|
"""
|
57
56
|
activate :google_analytics do |ga|
|
58
57
|
ga.tracking_id = 'UA-123456-78'
|
59
58
|
ga.domain_name = 'example.com'
|
60
|
-
ga.debug = false
|
61
|
-
ga.allow_linker = false
|
62
|
-
ga.anonymize_ip = false
|
63
59
|
end
|
64
60
|
"""
|
65
61
|
Given the Server is running at "test-app"
|
@@ -79,16 +75,14 @@ Feature: Google Analytics tag helper
|
|
79
75
|
</script>
|
80
76
|
"""
|
81
77
|
|
82
|
-
Scenario:
|
78
|
+
Scenario: Tracking across multiple domains and subdomains
|
83
79
|
Given a fixture app "test-app"
|
84
80
|
And a file named "config.rb" with:
|
85
81
|
"""
|
86
82
|
activate :google_analytics do |ga|
|
87
83
|
ga.tracking_id = 'UA-123456-78'
|
88
84
|
ga.domain_name = 'example.com'
|
89
|
-
ga.debug = false
|
90
85
|
ga.allow_linker = true
|
91
|
-
ga.anonymize_ip = false
|
92
86
|
end
|
93
87
|
"""
|
94
88
|
Given the Server is running at "test-app"
|
@@ -115,9 +109,6 @@ Feature: Google Analytics tag helper
|
|
115
109
|
"""
|
116
110
|
activate :google_analytics do |ga|
|
117
111
|
ga.tracking_id = 'UA-123456-78'
|
118
|
-
ga.domain_name = nil
|
119
|
-
ga.debug = false
|
120
|
-
ga.allow_linker = false
|
121
112
|
ga.anonymize_ip = true
|
122
113
|
end
|
123
114
|
"""
|
@@ -137,16 +128,14 @@ Feature: Google Analytics tag helper
|
|
137
128
|
})();
|
138
129
|
</script>
|
139
130
|
"""
|
140
|
-
|
131
|
+
|
132
|
+
Scenario: Disable tracking in development environment
|
141
133
|
Given a fixture app "test-app"
|
142
134
|
And a file named "config.rb" with:
|
143
135
|
"""
|
144
136
|
activate :google_analytics do |ga|
|
145
137
|
ga.tracking_id = 'UA-123456-78'
|
146
|
-
ga.
|
147
|
-
ga.debug = true
|
148
|
-
ga.allow_linker = true
|
149
|
-
ga.anonymize_ip = true
|
138
|
+
ga.development = false
|
150
139
|
end
|
151
140
|
"""
|
152
141
|
Given the Server is running at "test-app"
|
@@ -156,15 +145,47 @@ Feature: Google Analytics tag helper
|
|
156
145
|
<script type="text/javascript">
|
157
146
|
var _gaq = _gaq || [];
|
158
147
|
_gaq.push(["_setAccount", "UA-123456-78"]);
|
159
|
-
_gaq.push(["_setDomainName", "example.com"]);
|
160
|
-
_gaq.push(["_setAllowLinker", true]);
|
161
|
-
_gaq.push(["_gat._anonymizeIp"]);
|
162
|
-
_gaq.push(["_trackPageview"]);
|
163
148
|
(function() {
|
164
149
|
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
165
|
-
ga.src = ('https:' == document.location.protocol ? '//ssl' : '//www') + '.google-analytics.com/
|
150
|
+
ga.src = ('https:' == document.location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js';
|
166
151
|
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
167
152
|
})();
|
168
153
|
</script>
|
169
154
|
"""
|
170
155
|
|
156
|
+
Scenario: Compress the JavaScript code
|
157
|
+
Given a fixture app "test-app"
|
158
|
+
And a file named "config.rb" with:
|
159
|
+
"""
|
160
|
+
activate :google_analytics do |ga|
|
161
|
+
ga.tracking_id = 'UA-123456-78'
|
162
|
+
ga.minify = true
|
163
|
+
end
|
164
|
+
"""
|
165
|
+
Given the Server is running at "test-app"
|
166
|
+
When I go to "/"
|
167
|
+
Then I should see:
|
168
|
+
"""
|
169
|
+
<script type="text/javascript">var _gaq=_gaq||[];_gaq.push(["_setAccount","UA-123456-78"]),_gaq.push(["_trackPageview"]),function(){var t=document.createElement("script");t.type="text/javascript",t.async=!0,t.src=("https:"==document.location.protocol?"//ssl":"//www")+".google-analytics.com/ga.js";var e=document.getElementsByTagName("script")[0];e.parentNode.insertBefore(t,e)}();</script>
|
170
|
+
"""
|
171
|
+
|
172
|
+
Scenario: Full options
|
173
|
+
Given a fixture app "test-app"
|
174
|
+
And a file named "config.rb" with:
|
175
|
+
"""
|
176
|
+
activate :google_analytics do |ga|
|
177
|
+
ga.tracking_id = 'UA-123456-78'
|
178
|
+
ga.domain_name = 'example.com'
|
179
|
+
ga.debug = true
|
180
|
+
ga.allow_linker = true
|
181
|
+
ga.anonymize_ip = true
|
182
|
+
ga.development = true
|
183
|
+
ga.minify = true
|
184
|
+
end
|
185
|
+
"""
|
186
|
+
Given the Server is running at "test-app"
|
187
|
+
When I go to "/"
|
188
|
+
Then I should see:
|
189
|
+
"""
|
190
|
+
<script type="text/javascript">var _gaq=_gaq||[];_gaq.push(["_setAccount","UA-123456-78"]),_gaq.push(["_setDomainName","example.com"]),_gaq.push(["_setAllowLinker",!0]),_gaq.push(["_gat._anonymizeIp"]),_gaq.push(["_trackPageview"]),function(){var e=document.createElement("script");e.type="text/javascript",e.async=!0,e.src=("https:"==document.location.protocol?"//ssl":"//www")+".google-analytics.com/u/ga_debug.js";var a=document.getElementsByTagName("script")[0];a.parentNode.insertBefore(e,a)}();</script>
|
191
|
+
"""
|
data/features/support/env.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
PROJECT_ROOT_PATH = File.dirname(File.dirname(File.dirname(__FILE__)))
|
2
|
-
require
|
3
|
-
require
|
2
|
+
require 'middleman-core'
|
3
|
+
require 'middleman-core/step_definitions'
|
4
4
|
require File.join(PROJECT_ROOT_PATH, 'lib', 'middleman-google-analytics')
|
data/features/universal.feature
CHANGED
@@ -6,10 +6,6 @@ Feature: Google Analytics universal tag helper
|
|
6
6
|
"""
|
7
7
|
activate :google_analytics do |ga|
|
8
8
|
ga.tracking_id = 'UA-123456-78'
|
9
|
-
ga.domain_name = nil
|
10
|
-
ga.debug = false
|
11
|
-
ga.allow_linker = false
|
12
|
-
ga.anonymize_ip = false
|
13
9
|
end
|
14
10
|
"""
|
15
11
|
Given the Server is running at "test-app-universal"
|
@@ -26,16 +22,13 @@ Feature: Google Analytics universal tag helper
|
|
26
22
|
</script>
|
27
23
|
"""
|
28
24
|
|
29
|
-
Scenario:
|
25
|
+
Scenario: Tracking across a domain and its subdomains
|
30
26
|
Given a fixture app "test-app-universal"
|
31
27
|
And a file named "config.rb" with:
|
32
28
|
"""
|
33
29
|
activate :google_analytics do |ga|
|
34
30
|
ga.tracking_id = 'UA-123456-78'
|
35
31
|
ga.domain_name = 'example.com'
|
36
|
-
ga.debug = false
|
37
|
-
ga.allow_linker = false
|
38
|
-
ga.anonymize_ip = false
|
39
32
|
end
|
40
33
|
"""
|
41
34
|
Given the Server is running at "test-app-universal"
|
@@ -52,16 +45,14 @@ Feature: Google Analytics universal tag helper
|
|
52
45
|
</script>
|
53
46
|
"""
|
54
47
|
|
55
|
-
Scenario:
|
48
|
+
Scenario: Tracking across multiple domains and subdomains
|
56
49
|
Given a fixture app "test-app-universal"
|
57
50
|
And a file named "config.rb" with:
|
58
51
|
"""
|
59
52
|
activate :google_analytics do |ga|
|
60
53
|
ga.tracking_id = 'UA-123456-78'
|
61
54
|
ga.domain_name = 'example.com'
|
62
|
-
ga.debug = false
|
63
55
|
ga.allow_linker = true
|
64
|
-
ga.anonymize_ip = false
|
65
56
|
end
|
66
57
|
"""
|
67
58
|
Given the Server is running at "test-app-universal"
|
@@ -84,9 +75,6 @@ Feature: Google Analytics universal tag helper
|
|
84
75
|
"""
|
85
76
|
activate :google_analytics do |ga|
|
86
77
|
ga.tracking_id = 'UA-123456-78'
|
87
|
-
ga.domain_name = nil
|
88
|
-
ga.debug = false
|
89
|
-
ga.allow_linker = false
|
90
78
|
ga.anonymize_ip = true
|
91
79
|
end
|
92
80
|
"""
|
@@ -104,6 +92,45 @@ Feature: Google Analytics universal tag helper
|
|
104
92
|
ga('send', 'pageview');
|
105
93
|
</script>
|
106
94
|
"""
|
95
|
+
|
96
|
+
Scenario: Disable tracking in development environment
|
97
|
+
Given a fixture app "test-app-universal"
|
98
|
+
And a file named "config.rb" with:
|
99
|
+
"""
|
100
|
+
activate :google_analytics do |ga|
|
101
|
+
ga.tracking_id = 'UA-123456-78'
|
102
|
+
ga.development = false
|
103
|
+
end
|
104
|
+
"""
|
105
|
+
Given the Server is running at "test-app-universal"
|
106
|
+
When I go to "/"
|
107
|
+
Then I should see:
|
108
|
+
"""
|
109
|
+
<script type="text/javascript">
|
110
|
+
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
111
|
+
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
112
|
+
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
113
|
+
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
114
|
+
ga('create', 'UA-123456-78', 'auto');
|
115
|
+
</script>
|
116
|
+
"""
|
117
|
+
|
118
|
+
Scenario: Compress the JavaScript code
|
119
|
+
Given a fixture app "test-app-universal"
|
120
|
+
And a file named "config.rb" with:
|
121
|
+
"""
|
122
|
+
activate :google_analytics do |ga|
|
123
|
+
ga.tracking_id = 'UA-123456-78'
|
124
|
+
ga.minify = true
|
125
|
+
end
|
126
|
+
"""
|
127
|
+
Given the Server is running at "test-app-universal"
|
128
|
+
When I go to "/"
|
129
|
+
Then I should see:
|
130
|
+
"""
|
131
|
+
<script type="text/javascript">!function(e,a,t,n,c,o,s){e.GoogleAnalyticsObject=c,e[c]=e[c]||function(){(e[c].q=e[c].q||[]).push(arguments)},e[c].l=1*new Date,o=a.createElement(t),s=a.getElementsByTagName(t)[0],o.async=1,o.src=n,s.parentNode.insertBefore(o,s)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-123456-78","auto"),ga("send","pageview");</script>
|
132
|
+
"""
|
133
|
+
|
107
134
|
Scenario: Full options
|
108
135
|
Given a fixture app "test-app-universal"
|
109
136
|
And a file named "config.rb" with:
|
@@ -114,19 +141,13 @@ Feature: Google Analytics universal tag helper
|
|
114
141
|
ga.debug = true
|
115
142
|
ga.allow_linker = true
|
116
143
|
ga.anonymize_ip = true
|
144
|
+
ga.development = true
|
145
|
+
ga.minify = true
|
117
146
|
end
|
118
147
|
"""
|
119
148
|
Given the Server is running at "test-app-universal"
|
120
149
|
When I go to "/"
|
121
150
|
Then I should see:
|
122
151
|
"""
|
123
|
-
<script type="text/javascript">
|
124
|
-
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
125
|
-
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
126
|
-
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
127
|
-
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
128
|
-
ga('create', 'UA-123456-78', 'example.com', {'allowLinker': true});
|
129
|
-
ga('set', 'anonymizeIp', true);
|
130
|
-
ga('send', 'pageview');
|
131
|
-
</script>
|
152
|
+
<script type="text/javascript">!function(e,a,n,t,c,o,s){e.GoogleAnalyticsObject=c,e[c]=e[c]||function(){(e[c].q=e[c].q||[]).push(arguments)},e[c].l=1*new Date,o=a.createElement(n),s=a.getElementsByTagName(n)[0],o.async=1,o.src=t,s.parentNode.insertBefore(o,s)}(window,document,"script","//www.google-analytics.com/analytics.js","ga"),ga("create","UA-123456-78","example.com",{allowLinker:!0}),ga("set","anonymizeIp",!0),ga("send","pageview");</script>
|
132
153
|
"""
|
@@ -1,11 +1,7 @@
|
|
1
|
-
# Require core library
|
2
1
|
require 'middleman-core'
|
2
|
+
require 'middleman-google-analytics/version'
|
3
3
|
|
4
|
-
# Register extensions which can be activated
|
5
|
-
# Make sure we have the version of Middleman we expect
|
6
4
|
::Middleman::Extensions.register(:google_analytics) do
|
7
5
|
require 'middleman-google-analytics/extension'
|
8
|
-
|
9
|
-
# Return the extension module
|
10
|
-
::Middleman::GoogleAnalytics
|
6
|
+
::Middleman::GoogleAnalyticsExtension
|
11
7
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<%
|
2
|
+
create_options = []
|
3
|
+
create_options << "'#{@options.tracking_id}'"
|
4
|
+
create_options << "'#{@options.domain_name || :auto}'"
|
5
|
+
create_options << "{'allowLinker': true}" if @options.allow_linker
|
6
|
+
ga = []
|
7
|
+
ga << "ga('create', #{create_options.join(', ')});"
|
8
|
+
ga << "ga('set', 'anonymizeIp', true);" if @options.anonymize_ip
|
9
|
+
if build? || development? && @options.development
|
10
|
+
ga << "ga('send', 'pageview');"
|
11
|
+
end
|
12
|
+
%>
|
13
|
+
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
14
|
+
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
15
|
+
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
16
|
+
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
17
|
+
<%= ga.join("\n ") %>
|
@@ -1,67 +1,50 @@
|
|
1
|
+
require 'uglifier'
|
2
|
+
|
1
3
|
module Middleman
|
2
|
-
|
3
|
-
|
4
|
+
class GoogleAnalyticsExtension < Extension
|
5
|
+
option :tracking_id, nil, 'Property ID'
|
6
|
+
option :anonymize_ip, false, 'Removing the last octet of the IP address'
|
7
|
+
option :domain_name, nil, 'Tracking across a domain and its subdomains'
|
8
|
+
option :allow_linker, false, 'Tracking across multiple domains and ' \
|
9
|
+
'subdomains'
|
10
|
+
option :debug, false, 'Tracking Code Debugger'
|
11
|
+
option :development, true, 'Tracking in development environment'
|
12
|
+
option :minify, false, 'Compress the JavaScript code'
|
4
13
|
|
5
|
-
|
6
|
-
|
7
|
-
@@options ||= Options.new
|
8
|
-
end
|
14
|
+
def initialize(app, options_hash={}, &block)
|
15
|
+
super
|
9
16
|
|
10
|
-
|
11
|
-
|
12
|
-
yield @@options if block_given?
|
17
|
+
app.set :google_analytics_settings, options
|
18
|
+
end
|
13
19
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
20
|
+
def after_configuration
|
21
|
+
unless options.tracking_id
|
22
|
+
$stderr.puts 'Google Analytics: Please specify a property ID'
|
23
|
+
raise 'No property ID given'
|
24
|
+
end
|
18
25
|
|
19
|
-
|
26
|
+
if options.allow_linker and not options.domain_name
|
27
|
+
$stderr.puts 'Google Analytics: Please specify a domain_name when ' \
|
28
|
+
'using allow_linker'
|
29
|
+
raise 'No domain_name given'
|
20
30
|
end
|
21
|
-
alias :included :registered
|
22
31
|
end
|
23
32
|
|
24
|
-
|
33
|
+
helpers do
|
25
34
|
def google_analytics_tag
|
26
|
-
options =
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
gaq = []
|
32
|
-
gaq << ['_setAccount', "#{tracking_id}"]
|
33
|
-
gaq << ['_setDomainName', "#{domain_name}"] if domain_name
|
34
|
-
gaq << ['_setAllowLinker', true] if options.allow_linker
|
35
|
-
gaq << ['_gat._anonymizeIp'] if options.anonymize_ip
|
36
|
-
gaq << ['_trackPageview']
|
37
|
-
%Q{<script type="text/javascript">
|
38
|
-
var _gaq = _gaq || [];
|
39
|
-
#{gaq.map! { |x| "_gaq.push(#{x});" }.join("\n ")}
|
40
|
-
(function() {
|
41
|
-
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
42
|
-
ga.src = ('https:' == document.location.protocol ? '//ssl' : '//www') + '.google-analytics.com/#{ga}.js';
|
43
|
-
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
44
|
-
})();
|
45
|
-
</script>}
|
46
|
-
end
|
35
|
+
@options = google_analytics_settings
|
36
|
+
file = File.join(File.dirname(__FILE__), 'ga.js.erb')
|
37
|
+
content = ERB.new(File.read(file)).result(binding)
|
38
|
+
content = Uglifier.compile(content) if google_analytics_settings.minify
|
39
|
+
content_tag(:script, content, type: 'text/javascript')
|
47
40
|
end
|
48
41
|
|
49
42
|
def google_analytics_universal_tag
|
50
|
-
options =
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
%Q{<script type="text/javascript">
|
56
|
-
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
57
|
-
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
58
|
-
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
59
|
-
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
60
|
-
ga('create', '#{ tracking_id }', '#{ domain_name || 'auto' }'#{ options.allow_linker ? ", {'allowLinker': true}" : '' });#{
|
61
|
-
options.anonymize_ip ? "\n ga('set', 'anonymizeIp', true);" : '' }
|
62
|
-
ga('send', 'pageview');
|
63
|
-
</script>}
|
64
|
-
end
|
43
|
+
@options = google_analytics_settings
|
44
|
+
file = File.join(File.dirname(__FILE__), 'analytics.js.erb')
|
45
|
+
content = ERB.new(File.read(file)).result(binding)
|
46
|
+
content = Uglifier.compile(content) if google_analytics_settings.minify
|
47
|
+
content_tag(:script, content, type: 'text/javascript')
|
65
48
|
end
|
66
49
|
end
|
67
50
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<%
|
2
|
+
file = @options.debug ? 'u/ga_debug' : 'ga'
|
3
|
+
gaq = []
|
4
|
+
gaq << ['_setAccount', "#{@options.tracking_id}"]
|
5
|
+
gaq << ['_setDomainName', "#{@options.domain_name}"] if @options.domain_name
|
6
|
+
gaq << ['_setAllowLinker', true] if @options.allow_linker
|
7
|
+
gaq << ['_gat._anonymizeIp'] if @options.anonymize_ip
|
8
|
+
if build? || development? && @options.development
|
9
|
+
gaq << ['_trackPageview']
|
10
|
+
end
|
11
|
+
%>
|
12
|
+
var _gaq = _gaq || [];
|
13
|
+
<%= gaq.map! { |x| "_gaq.push(#{x});" }.join("\n ") %>
|
14
|
+
(function() {
|
15
|
+
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
16
|
+
ga.src = ('https:' == document.location.protocol ? '//ssl' : '//www') + '.google-analytics.com/<%= file %>.js';
|
17
|
+
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
18
|
+
})();
|
@@ -3,24 +3,22 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
require "middleman-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.
|
14
|
-
|
6
|
+
s.name = "middleman-google-analytics"
|
7
|
+
s.version = Middleman::GoogleAnalytics::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Daniel Bayerlein", "Jon Frisby"]
|
10
|
+
s.email = ["daniel.bayerlein@googlemail.com", "jfrisby@mrjoy.com"]
|
11
|
+
s.homepage = "https://github.com/danielbayerlein/middleman-google-analytics"
|
12
|
+
s.summary = "A Middleman plugin for handling Google Analytics tracking code."
|
13
|
+
s.description = "middleman-google-analytics is a Middleman extension that generates Google Analytics tracking code, and keeps your config in config.rb, where it belongs."
|
14
|
+
s.license = "MIT"
|
15
15
|
|
16
|
-
s.files
|
17
|
-
s.test_files
|
18
|
-
s.executables
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
|
21
|
-
|
22
|
-
s.
|
23
|
-
|
24
|
-
# Additional dependencies
|
25
|
-
# s.add_runtime_dependency("gem-name", "gem-version")
|
21
|
+
s.required_ruby_version = '>= 1.9.3'
|
22
|
+
s.add_dependency("middleman-core", ["~> 3.2"])
|
23
|
+
s.add_dependency("uglifier", ["~> 2.5"])
|
26
24
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: middleman-google-analytics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0.pre
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Bayerlein
|
@@ -9,23 +9,38 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-04-
|
12
|
+
date: 2014-04-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: middleman-core
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: 3.
|
20
|
+
version: '3.2'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - "
|
25
|
+
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: 3.
|
28
|
-
|
27
|
+
version: '3.2'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: uglifier
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '2.5'
|
35
|
+
type: :runtime
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '2.5'
|
42
|
+
description: middleman-google-analytics is a Middleman extension that generates Google
|
43
|
+
Analytics tracking code, and keeps your config in config.rb, where it belongs.
|
29
44
|
email:
|
30
45
|
- daniel.bayerlein@googlemail.com
|
31
46
|
- jfrisby@mrjoy.com
|
@@ -46,9 +61,10 @@ files:
|
|
46
61
|
- fixtures/test-app-universal/source/index.html.erb
|
47
62
|
- fixtures/test-app/source/index.html.erb
|
48
63
|
- lib/middleman-google-analytics.rb
|
64
|
+
- lib/middleman-google-analytics/analytics.js.erb
|
49
65
|
- lib/middleman-google-analytics/extension.rb
|
66
|
+
- lib/middleman-google-analytics/ga.js.erb
|
50
67
|
- lib/middleman-google-analytics/version.rb
|
51
|
-
- lib/middleman_extension.rb
|
52
68
|
- middleman-google-analytics.gemspec
|
53
69
|
homepage: https://github.com/danielbayerlein/middleman-google-analytics
|
54
70
|
licenses:
|
@@ -62,12 +78,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
62
78
|
requirements:
|
63
79
|
- - ">="
|
64
80
|
- !ruby/object:Gem::Version
|
65
|
-
version:
|
81
|
+
version: 1.9.3
|
66
82
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
83
|
requirements:
|
68
|
-
- - "
|
84
|
+
- - ">"
|
69
85
|
- !ruby/object:Gem::Version
|
70
|
-
version:
|
86
|
+
version: 1.3.1
|
71
87
|
requirements: []
|
72
88
|
rubyforge_project:
|
73
89
|
rubygems_version: 2.2.2
|
data/lib/middleman_extension.rb
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
require 'middleman-google-analytics'
|