middleman-google-analytics 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -3
  3. data/CHANGELOG.md +5 -0
  4. data/Gemfile +1 -1
  5. data/LICENSE +1 -1
  6. data/README.md +1 -1
  7. data/Rakefile +2 -3
  8. data/features/google_analytics.feature +123 -0
  9. data/features/{universal.feature → google_analytics_universal.feature} +32 -92
  10. data/fixtures/across-a-domain-app/config.rb +4 -0
  11. data/fixtures/{test-app-universal/source/index.html.erb → across-a-domain-app/source/google-analytics-universal.html.erb} +0 -0
  12. data/fixtures/{test-app/source/index.html.erb → across-a-domain-app/source/google-analytics.html.erb} +0 -0
  13. data/fixtures/across-multiple-domains-app/config.rb +5 -0
  14. data/fixtures/across-multiple-domains-app/source/google-analytics-universal.html.erb +1 -0
  15. data/fixtures/across-multiple-domains-app/source/google-analytics.html.erb +1 -0
  16. data/fixtures/anonymize-ip-app/config.rb +4 -0
  17. data/fixtures/anonymize-ip-app/source/google-analytics-universal.html.erb +1 -0
  18. data/fixtures/anonymize-ip-app/source/google-analytics.html.erb +1 -0
  19. data/fixtures/basic-app/config.rb +3 -0
  20. data/fixtures/basic-app/source/google-analytics-universal.html.erb +1 -0
  21. data/fixtures/basic-app/source/google-analytics.html.erb +1 -0
  22. data/fixtures/compress-js-app/config.rb +4 -0
  23. data/fixtures/compress-js-app/source/google-analytics-universal.html.erb +1 -0
  24. data/fixtures/compress-js-app/source/google-analytics.html.erb +1 -0
  25. data/fixtures/debug-app/config.rb +4 -0
  26. data/fixtures/debug-app/source/google-analytics.html.erb +1 -0
  27. data/fixtures/disable-app/config.rb +4 -0
  28. data/fixtures/disable-app/source/google-analytics-universal.html.erb +1 -0
  29. data/fixtures/disable-app/source/google-analytics.html.erb +1 -0
  30. data/fixtures/full-app/config.rb +9 -0
  31. data/fixtures/full-app/source/google-analytics-universal.html.erb +1 -0
  32. data/fixtures/full-app/source/google-analytics.html.erb +1 -0
  33. data/lib/middleman-google-analytics/analytics.js.erb +1 -3
  34. data/lib/middleman-google-analytics/extension.rb +10 -17
  35. data/lib/middleman-google-analytics/ga.js.erb +1 -3
  36. data/lib/middleman-google-analytics/helpers.rb +29 -0
  37. data/lib/middleman-google-analytics/version.rb +1 -1
  38. metadata +31 -9
  39. data/features/helper.feature +0 -191
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c4248b456fb118785004f847d6718f1f34661fb0
4
- data.tar.gz: faa1ceb1f01820fd37a6c31f5be97672e81f93c7
3
+ metadata.gz: a51b2ac371e8473750df8ecd42cc01e50a2ccfff
4
+ data.tar.gz: 4f8721f1ca33bdffecdc0da50645bfa418f8a8b1
5
5
  SHA512:
6
- metadata.gz: 6f37394e214e155593c8d101f36e33be37af7fbe391cea1fbcffae026fb9ea061916e33bf41b9bc799eb8b4b9909936a76d096dcfe65754857f771fd7adee046
7
- data.tar.gz: 2656cab606b2a572983c12b5a392a9f84fb42f12eeae89ad4a6add04f516c07971c6c23da613b37e9ee1b1f0bad4b9e86bbab0f227e5c409431630d6cb11fac3
6
+ metadata.gz: 868b3bd4f25e4cb9655f55b78abb46a9e384f535cf7711e4d345bf536136b49b99850c181c2c0d6ae102e843774abbc8cfbe8813c0d09a8f19cdf8aafa6411bb
7
+ data.tar.gz: e7f1f30c3975d168d1c9c9d710c087c590bde2f45fa0daed5362611e53e35141cfbb4801b393d32f37b3e9b0604b2cb26576c50a1307c0c8a1e883a401535ecc
data/.travis.yml CHANGED
@@ -2,17 +2,17 @@ language: ruby
2
2
 
3
3
  rvm:
4
4
  - ruby-head
5
- - 2.1.2
5
+ - 2.2.0
6
+ - 2.1.5
6
7
  - 2.0.0
7
8
  - 1.9.3
8
9
  - jruby-19mode
9
10
 
10
- # Bug in jRuby w/ Rouge: https://github.com/jruby/jruby/issues/1392
11
11
  matrix:
12
12
  allow_failures:
13
13
  - rvm: ruby-head
14
14
  - rvm: jruby-19mode
15
15
 
16
- script: "bundle exec rake test"
16
+ script: bundle exec rake test
17
17
 
18
18
  env: TEST=true
data/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  ## HEAD (???)
4
4
 
5
+ ## 1.1.0 (2015-01-06)
6
+
7
+ * Handling for development option revised, see #19.
8
+ * Refactoring Middleman::GoogleAnalytics.
9
+
5
10
  ## 1.0.2 (2014-06-05)
6
11
 
7
12
  * Fix conflicting version of Uglifier (Middleman >= 3.2).
data/Gemfile CHANGED
@@ -11,7 +11,7 @@ end
11
11
 
12
12
  group :test do
13
13
  gem 'cucumber'
14
- gem 'fivemat', :github => 'tpope/fivemat'
14
+ gem 'fivemat', github: 'tpope/fivemat'
15
15
  gem 'aruba'
16
16
  gem 'rspec'
17
17
  end
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2014 Daniel Bayerlein
3
+ Copyright (c) 2014-2015 Daniel Bayerlein
4
4
  Copyright (c) 2013 Jon Frisby
5
5
 
6
6
  Permission is hereby granted, free of charge, to any person obtaining a copy
data/README.md CHANGED
@@ -104,6 +104,6 @@ display the GA tracking code.
104
104
 
105
105
  ## License
106
106
 
107
- Copyright (c) 2014 Daniel Bayerlein. See [LICENSE](./LICENSE) for details.
107
+ Copyright (c) 2014-2015 Daniel Bayerlein. See [LICENSE](./LICENSE) for details.
108
108
 
109
109
  Copyright (c) 2013 Jon Frisby.
data/Rakefile CHANGED
@@ -9,6 +9,5 @@ end
9
9
 
10
10
  require 'rake/clean'
11
11
 
12
- task :test => ['cucumber']
13
-
14
- task :default => :test
12
+ task test: :cucumber
13
+ task default: :test
@@ -0,0 +1,123 @@
1
+ Feature: Google Analytics tag helper
2
+
3
+ Scenario: Basic tracking code
4
+ Given the Server is running at "basic-app"
5
+ When I go to "/google-analytics.html"
6
+ Then I should see:
7
+ """
8
+ <script type="text/javascript">
9
+ var _gaq = _gaq || [];
10
+ _gaq.push(["_setAccount", "UA-123456-78"]);
11
+ _gaq.push(["_trackPageview"]);
12
+ (function() {
13
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
14
+ ga.src = ('https:' == document.location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js';
15
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
16
+ })();
17
+ </script>
18
+ """
19
+
20
+ Scenario: On debug mode
21
+ Given the Server is running at "debug-app"
22
+ When I go to "/google-analytics.html"
23
+ Then I should see:
24
+ """
25
+ <script type="text/javascript">
26
+ var _gaq = _gaq || [];
27
+ _gaq.push(["_setAccount", "UA-123456-78"]);
28
+ _gaq.push(["_trackPageview"]);
29
+ (function() {
30
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
31
+ ga.src = ('https:' == document.location.protocol ? '//ssl' : '//www') + '.google-analytics.com/u/ga_debug.js';
32
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
33
+ })();
34
+ </script>
35
+ """
36
+
37
+ Scenario: Tracking across a domain and its subdomains
38
+ Given the Server is running at "across-a-domain-app"
39
+ When I go to "/google-analytics.html"
40
+ Then I should see:
41
+ """
42
+ <script type="text/javascript">
43
+ var _gaq = _gaq || [];
44
+ _gaq.push(["_setAccount", "UA-123456-78"]);
45
+ _gaq.push(["_setDomainName", "example.com"]);
46
+ _gaq.push(["_trackPageview"]);
47
+ (function() {
48
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
49
+ ga.src = ('https:' == document.location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js';
50
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
51
+ })();
52
+ </script>
53
+ """
54
+
55
+ Scenario: Tracking across multiple domains and subdomains
56
+ Given the Server is running at "across-multiple-domains-app"
57
+ When I go to "/google-analytics.html"
58
+ Then I should see:
59
+ """
60
+ <script type="text/javascript">
61
+ var _gaq = _gaq || [];
62
+ _gaq.push(["_setAccount", "UA-123456-78"]);
63
+ _gaq.push(["_setDomainName", "example.com"]);
64
+ _gaq.push(["_setAllowLinker", true]);
65
+ _gaq.push(["_trackPageview"]);
66
+ (function() {
67
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
68
+ ga.src = ('https:' == document.location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js';
69
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
70
+ })();
71
+ </script>
72
+ """
73
+
74
+ Scenario: Removing the last octet of the IP address
75
+ Given the Server is running at "anonymize-ip-app"
76
+ When I go to "/google-analytics.html"
77
+ Then I should see:
78
+ """
79
+ <script type="text/javascript">
80
+ var _gaq = _gaq || [];
81
+ _gaq.push(["_setAccount", "UA-123456-78"]);
82
+ _gaq.push(["_gat._anonymizeIp"]);
83
+ _gaq.push(["_trackPageview"]);
84
+ (function() {
85
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
86
+ ga.src = ('https:' == document.location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js';
87
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
88
+ })();
89
+ </script>
90
+ """
91
+
92
+ Scenario: Disable tracking in development environment
93
+ Given the Server is running at "disable-app"
94
+ When I go to "/google-analytics.html"
95
+ Then I should see ""
96
+ But I should not see:
97
+ """
98
+ <script type="text/javascript">
99
+ var _gaq = _gaq || [];
100
+ _gaq.push(["_setAccount", "UA-123456-78"]);
101
+ (function() {
102
+ var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
103
+ ga.src = ('https:' == document.location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js';
104
+ var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
105
+ })();
106
+ </script>
107
+ """
108
+
109
+ Scenario: Compress the JavaScript code
110
+ Given the Server is running at "compress-js-app"
111
+ When I go to "/google-analytics.html"
112
+ Then I should see:
113
+ """
114
+ <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>
115
+ """
116
+
117
+ Scenario: Full options
118
+ Given the Server is running at "full-app"
119
+ When I go to "/google-analytics.html"
120
+ Then I should see:
121
+ """
122
+ <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>
123
+ """
@@ -1,16 +1,9 @@
1
- Feature: Google Analytics universal tag helper
1
+ Feature: Google Analytics Universal tag helper
2
2
 
3
3
  Scenario: Basic tracking code
4
- Given a fixture app "test-app-universal"
5
- And a file named "config.rb" with:
6
- """
7
- activate :google_analytics do |ga|
8
- ga.tracking_id = 'UA-123456-78'
9
- end
10
- """
11
- Given the Server is running at "test-app-universal"
12
- When I go to "/"
13
- Then I should see:
4
+ Given the Server is running at "basic-app"
5
+ When I go to "/google-analytics-universal.html"
6
+ Then I should see:
14
7
  """
15
8
  <script type="text/javascript">
16
9
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
@@ -23,17 +16,9 @@ Feature: Google Analytics universal tag helper
23
16
  """
24
17
 
25
18
  Scenario: Tracking across a domain and its subdomains
26
- Given a fixture app "test-app-universal"
27
- And a file named "config.rb" with:
28
- """
29
- activate :google_analytics do |ga|
30
- ga.tracking_id = 'UA-123456-78'
31
- ga.domain_name = 'example.com'
32
- end
33
- """
34
- Given the Server is running at "test-app-universal"
35
- When I go to "/"
36
- Then I should see:
19
+ Given the Server is running at "across-a-domain-app"
20
+ When I go to "/google-analytics-universal.html"
21
+ Then I should see:
37
22
  """
38
23
  <script type="text/javascript">
39
24
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
@@ -46,18 +31,9 @@ Feature: Google Analytics universal tag helper
46
31
  """
47
32
 
48
33
  Scenario: Tracking across multiple domains and subdomains
49
- Given a fixture app "test-app-universal"
50
- And a file named "config.rb" with:
51
- """
52
- activate :google_analytics do |ga|
53
- ga.tracking_id = 'UA-123456-78'
54
- ga.domain_name = 'example.com'
55
- ga.allow_linker = true
56
- end
57
- """
58
- Given the Server is running at "test-app-universal"
59
- When I go to "/"
60
- Then I should see:
34
+ Given the Server is running at "across-multiple-domains-app"
35
+ When I go to "/google-analytics-universal.html"
36
+ Then I should see:
61
37
  """
62
38
  <script type="text/javascript">
63
39
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
@@ -70,17 +46,9 @@ Feature: Google Analytics universal tag helper
70
46
  """
71
47
 
72
48
  Scenario: Removing the last octet of the IP address
73
- Given a fixture app "test-app-universal"
74
- And a file named "config.rb" with:
75
- """
76
- activate :google_analytics do |ga|
77
- ga.tracking_id = 'UA-123456-78'
78
- ga.anonymize_ip = true
79
- end
80
- """
81
- Given the Server is running at "test-app-universal"
82
- When I go to "/"
83
- Then I should see:
49
+ Given the Server is running at "anonymize-ip-app"
50
+ When I go to "/google-analytics-universal.html"
51
+ Then I should see:
84
52
  """
85
53
  <script type="text/javascript">
86
54
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
@@ -94,60 +62,32 @@ Feature: Google Analytics universal tag helper
94
62
  """
95
63
 
96
64
  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
- """
65
+ Given the Server is running at "disable-app"
66
+ When I go to "/google-analytics-universal.html"
67
+ Then I should see ""
68
+ But I should not see:
69
+ """
70
+ <script type="text/javascript">
71
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
72
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
73
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
74
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
75
+ ga('create', 'UA-123456-78', 'auto');
76
+ </script>
77
+ """
117
78
 
118
79
  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:
80
+ Given the Server is running at "compress-js-app"
81
+ When I go to "/google-analytics-universal.html"
82
+ Then I should see:
130
83
  """
131
84
  <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
85
  """
133
86
 
134
87
  Scenario: Full options
135
- Given a fixture app "test-app-universal"
136
- And a file named "config.rb" with:
137
- """
138
- activate :google_analytics do |ga|
139
- ga.tracking_id = 'UA-123456-78'
140
- ga.domain_name = 'example.com'
141
- ga.debug = true
142
- ga.allow_linker = true
143
- ga.anonymize_ip = true
144
- ga.development = true
145
- ga.minify = true
146
- end
147
- """
148
- Given the Server is running at "test-app-universal"
149
- When I go to "/"
150
- Then I should see:
88
+ Given the Server is running at "full-app"
89
+ When I go to "/google-analytics-universal.html"
90
+ Then I should see:
151
91
  """
152
92
  <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>
153
93
  """
@@ -0,0 +1,4 @@
1
+ activate :google_analytics do |ga|
2
+ ga.tracking_id = 'UA-123456-78'
3
+ ga.domain_name = 'example.com'
4
+ end
@@ -0,0 +1,5 @@
1
+ activate :google_analytics do |ga|
2
+ ga.tracking_id = 'UA-123456-78'
3
+ ga.domain_name = 'example.com'
4
+ ga.allow_linker = true
5
+ end
@@ -0,0 +1 @@
1
+ <%= google_analytics_universal_tag %>
@@ -0,0 +1 @@
1
+ <%= google_analytics_tag %>
@@ -0,0 +1,4 @@
1
+ activate :google_analytics do |ga|
2
+ ga.tracking_id = 'UA-123456-78'
3
+ ga.anonymize_ip = true
4
+ end
@@ -0,0 +1 @@
1
+ <%= google_analytics_universal_tag %>
@@ -0,0 +1 @@
1
+ <%= google_analytics_tag %>
@@ -0,0 +1,3 @@
1
+ activate :google_analytics do |ga|
2
+ ga.tracking_id = 'UA-123456-78'
3
+ end
@@ -0,0 +1 @@
1
+ <%= google_analytics_universal_tag %>
@@ -0,0 +1 @@
1
+ <%= google_analytics_tag %>
@@ -0,0 +1,4 @@
1
+ activate :google_analytics do |ga|
2
+ ga.tracking_id = 'UA-123456-78'
3
+ ga.minify = true
4
+ end
@@ -0,0 +1 @@
1
+ <%= google_analytics_universal_tag %>
@@ -0,0 +1 @@
1
+ <%= google_analytics_tag %>
@@ -0,0 +1,4 @@
1
+ activate :google_analytics do |ga|
2
+ ga.tracking_id = 'UA-123456-78'
3
+ ga.debug = true
4
+ end
@@ -0,0 +1 @@
1
+ <%= google_analytics_tag %>
@@ -0,0 +1,4 @@
1
+ activate :google_analytics do |ga|
2
+ ga.tracking_id = 'UA-123456-78'
3
+ ga.development = false
4
+ end
@@ -0,0 +1 @@
1
+ <%= google_analytics_universal_tag %>
@@ -0,0 +1 @@
1
+ <%= google_analytics_tag %>
@@ -0,0 +1,9 @@
1
+ activate :google_analytics do |ga|
2
+ ga.tracking_id = 'UA-123456-78'
3
+ ga.domain_name = 'example.com'
4
+ ga.debug = true
5
+ ga.allow_linker = true
6
+ ga.anonymize_ip = true
7
+ ga.development = true
8
+ ga.minify = true
9
+ end
@@ -0,0 +1 @@
1
+ <%= google_analytics_universal_tag %>
@@ -0,0 +1 @@
1
+ <%= google_analytics_tag %>
@@ -6,9 +6,7 @@
6
6
  ga = []
7
7
  ga << "ga('create', #{create_options.join(', ')});"
8
8
  ga << "ga('set', 'anonymizeIp', true);" if @options.anonymize_ip
9
- if build? || development? && @options.development
10
- ga << "ga('send', 'pageview');"
11
- end
9
+ ga << "ga('send', 'pageview');"
12
10
  %>
13
11
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
14
12
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
@@ -1,4 +1,4 @@
1
- require 'uglifier'
1
+ require 'middleman-google-analytics/helpers'
2
2
 
3
3
  module Middleman
4
4
  class GoogleAnalyticsExtension < Extension
@@ -20,32 +20,25 @@ module Middleman
20
20
  def after_configuration
21
21
  unless options.tracking_id
22
22
  $stderr.puts 'Google Analytics: Please specify a property ID'
23
- raise 'No property ID given'
23
+ raise 'No property ID given' if display?
24
24
  end
25
25
 
26
26
  if options.allow_linker and not options.domain_name
27
27
  $stderr.puts 'Google Analytics: Please specify a domain_name when ' \
28
28
  'using allow_linker'
29
- raise 'No domain_name given'
29
+ raise 'No domain_name given' if display?
30
30
  end
31
31
  end
32
32
 
33
33
  helpers do
34
- def google_analytics_tag
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')
40
- end
34
+ include ::Middleman::GoogleAnalytics::Helpers
35
+ end
41
36
 
42
- def google_analytics_universal_tag
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')
48
- end
37
+ private
38
+
39
+ def display?
40
+ app.build? || app.development? && options.development
49
41
  end
42
+
50
43
  end
51
44
  end
@@ -5,9 +5,7 @@
5
5
  gaq << ['_setDomainName', "#{@options.domain_name}"] if @options.domain_name
6
6
  gaq << ['_setAllowLinker', true] if @options.allow_linker
7
7
  gaq << ['_gat._anonymizeIp'] if @options.anonymize_ip
8
- if build? || development? && @options.development
9
- gaq << ['_trackPageview']
10
- end
8
+ gaq << ['_trackPageview']
11
9
  %>
12
10
  var _gaq = _gaq || [];
13
11
  <%= gaq.map! { |x| "_gaq.push(#{x});" }.join("\n ") %>
@@ -0,0 +1,29 @@
1
+ require 'uglifier'
2
+
3
+ module Middleman
4
+ module GoogleAnalytics
5
+ module Helpers
6
+
7
+ def google_analytics_tag
8
+ render_script('ga.js.erb')
9
+ end
10
+
11
+ def google_analytics_universal_tag
12
+ render_script('analytics.js.erb')
13
+ end
14
+
15
+ private
16
+
17
+ def render_script(template)
18
+ return nil if development? && !google_analytics_settings.development
19
+
20
+ @options = google_analytics_settings
21
+ file = File.join(File.dirname(__FILE__), template)
22
+ content = ERB.new(File.read(file)).result(binding)
23
+ content = Uglifier.compile(content) if google_analytics_settings.minify
24
+ content_tag(:script, content, type: 'text/javascript')
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -1,5 +1,5 @@
1
1
  module Middleman
2
2
  module GoogleAnalytics
3
- VERSION = "1.0.2"
3
+ VERSION = "1.1.0"
4
4
  end
5
5
  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: 1.0.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Bayerlein
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-06-05 00:00:00.000000000 Z
12
+ date: 2015-01-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: middleman-core
@@ -61,15 +61,37 @@ files:
61
61
  - LICENSE
62
62
  - README.md
63
63
  - Rakefile
64
- - features/helper.feature
64
+ - features/google_analytics.feature
65
+ - features/google_analytics_universal.feature
65
66
  - features/support/env.rb
66
- - features/universal.feature
67
- - fixtures/test-app-universal/source/index.html.erb
68
- - fixtures/test-app/source/index.html.erb
67
+ - fixtures/across-a-domain-app/config.rb
68
+ - fixtures/across-a-domain-app/source/google-analytics-universal.html.erb
69
+ - fixtures/across-a-domain-app/source/google-analytics.html.erb
70
+ - fixtures/across-multiple-domains-app/config.rb
71
+ - fixtures/across-multiple-domains-app/source/google-analytics-universal.html.erb
72
+ - fixtures/across-multiple-domains-app/source/google-analytics.html.erb
73
+ - fixtures/anonymize-ip-app/config.rb
74
+ - fixtures/anonymize-ip-app/source/google-analytics-universal.html.erb
75
+ - fixtures/anonymize-ip-app/source/google-analytics.html.erb
76
+ - fixtures/basic-app/config.rb
77
+ - fixtures/basic-app/source/google-analytics-universal.html.erb
78
+ - fixtures/basic-app/source/google-analytics.html.erb
79
+ - fixtures/compress-js-app/config.rb
80
+ - fixtures/compress-js-app/source/google-analytics-universal.html.erb
81
+ - fixtures/compress-js-app/source/google-analytics.html.erb
82
+ - fixtures/debug-app/config.rb
83
+ - fixtures/debug-app/source/google-analytics.html.erb
84
+ - fixtures/disable-app/config.rb
85
+ - fixtures/disable-app/source/google-analytics-universal.html.erb
86
+ - fixtures/disable-app/source/google-analytics.html.erb
87
+ - fixtures/full-app/config.rb
88
+ - fixtures/full-app/source/google-analytics-universal.html.erb
89
+ - fixtures/full-app/source/google-analytics.html.erb
69
90
  - lib/middleman-google-analytics.rb
70
91
  - lib/middleman-google-analytics/analytics.js.erb
71
92
  - lib/middleman-google-analytics/extension.rb
72
93
  - lib/middleman-google-analytics/ga.js.erb
94
+ - lib/middleman-google-analytics/helpers.rb
73
95
  - lib/middleman-google-analytics/version.rb
74
96
  - middleman-google-analytics.gemspec
75
97
  homepage: https://github.com/danielbayerlein/middleman-google-analytics
@@ -92,12 +114,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
114
  version: '0'
93
115
  requirements: []
94
116
  rubyforge_project:
95
- rubygems_version: 2.2.2
117
+ rubygems_version: 2.4.5
96
118
  signing_key:
97
119
  specification_version: 4
98
120
  summary: A Middleman plugin for handling Google Analytics tracking code.
99
121
  test_files:
100
- - features/helper.feature
122
+ - features/google_analytics.feature
123
+ - features/google_analytics_universal.feature
101
124
  - features/support/env.rb
102
- - features/universal.feature
103
125
  has_rdoc:
@@ -1,191 +0,0 @@
1
- Feature: Google Analytics tag helper
2
-
3
- Scenario: Basic tracking code
4
- Given a fixture app "test-app"
5
- And a file named "config.rb" with:
6
- """
7
- activate :google_analytics do |ga|
8
- ga.tracking_id = 'UA-123456-78'
9
- end
10
- """
11
- Given the Server is running at "test-app"
12
- When I go to "/"
13
- Then I should see:
14
- """
15
- <script type="text/javascript">
16
- var _gaq = _gaq || [];
17
- _gaq.push(["_setAccount", "UA-123456-78"]);
18
- _gaq.push(["_trackPageview"]);
19
- (function() {
20
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
21
- ga.src = ('https:' == document.location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js';
22
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
23
- })();
24
- </script>
25
- """
26
-
27
- Scenario: On debug mode
28
- Given a fixture app "test-app"
29
- And a file named "config.rb" with:
30
- """
31
- activate :google_analytics do |ga|
32
- ga.tracking_id = 'UA-123456-78'
33
- ga.debug = true
34
- end
35
- """
36
- Given the Server is running at "test-app"
37
- When I go to "/"
38
- Then I should see:
39
- """
40
- <script type="text/javascript">
41
- var _gaq = _gaq || [];
42
- _gaq.push(["_setAccount", "UA-123456-78"]);
43
- _gaq.push(["_trackPageview"]);
44
- (function() {
45
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
46
- ga.src = ('https:' == document.location.protocol ? '//ssl' : '//www') + '.google-analytics.com/u/ga_debug.js';
47
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
48
- })();
49
- </script>
50
- """
51
-
52
- Scenario: Tracking across a domain and its subdomains
53
- Given a fixture app "test-app"
54
- And a file named "config.rb" with:
55
- """
56
- activate :google_analytics do |ga|
57
- ga.tracking_id = 'UA-123456-78'
58
- ga.domain_name = 'example.com'
59
- end
60
- """
61
- Given the Server is running at "test-app"
62
- When I go to "/"
63
- Then I should see:
64
- """
65
- <script type="text/javascript">
66
- var _gaq = _gaq || [];
67
- _gaq.push(["_setAccount", "UA-123456-78"]);
68
- _gaq.push(["_setDomainName", "example.com"]);
69
- _gaq.push(["_trackPageview"]);
70
- (function() {
71
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
72
- ga.src = ('https:' == document.location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js';
73
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
74
- })();
75
- </script>
76
- """
77
-
78
- Scenario: Tracking across multiple domains and subdomains
79
- Given a fixture app "test-app"
80
- And a file named "config.rb" with:
81
- """
82
- activate :google_analytics do |ga|
83
- ga.tracking_id = 'UA-123456-78'
84
- ga.domain_name = 'example.com'
85
- ga.allow_linker = true
86
- end
87
- """
88
- Given the Server is running at "test-app"
89
- When I go to "/"
90
- Then I should see:
91
- """
92
- <script type="text/javascript">
93
- var _gaq = _gaq || [];
94
- _gaq.push(["_setAccount", "UA-123456-78"]);
95
- _gaq.push(["_setDomainName", "example.com"]);
96
- _gaq.push(["_setAllowLinker", true]);
97
- _gaq.push(["_trackPageview"]);
98
- (function() {
99
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
100
- ga.src = ('https:' == document.location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js';
101
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
102
- })();
103
- </script>
104
- """
105
-
106
- Scenario: Removing the last octet of the IP address
107
- Given a fixture app "test-app"
108
- And a file named "config.rb" with:
109
- """
110
- activate :google_analytics do |ga|
111
- ga.tracking_id = 'UA-123456-78'
112
- ga.anonymize_ip = true
113
- end
114
- """
115
- Given the Server is running at "test-app"
116
- When I go to "/"
117
- Then I should see:
118
- """
119
- <script type="text/javascript">
120
- var _gaq = _gaq || [];
121
- _gaq.push(["_setAccount", "UA-123456-78"]);
122
- _gaq.push(["_gat._anonymizeIp"]);
123
- _gaq.push(["_trackPageview"]);
124
- (function() {
125
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
126
- ga.src = ('https:' == document.location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js';
127
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
128
- })();
129
- </script>
130
- """
131
-
132
- Scenario: Disable tracking in development environment
133
- Given a fixture app "test-app"
134
- And a file named "config.rb" with:
135
- """
136
- activate :google_analytics do |ga|
137
- ga.tracking_id = 'UA-123456-78'
138
- ga.development = false
139
- end
140
- """
141
- Given the Server is running at "test-app"
142
- When I go to "/"
143
- Then I should see:
144
- """
145
- <script type="text/javascript">
146
- var _gaq = _gaq || [];
147
- _gaq.push(["_setAccount", "UA-123456-78"]);
148
- (function() {
149
- var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
150
- ga.src = ('https:' == document.location.protocol ? '//ssl' : '//www') + '.google-analytics.com/ga.js';
151
- var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
152
- })();
153
- </script>
154
- """
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
- """