rack-tracker 1.12.1 → 1.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/rack/tracker/google_tag_manager/google_tag_manager.rb +1 -1
- data/lib/rack/tracker/google_tag_manager/template/google_tag_manager_head.erb +18 -12
- data/lib/rack/tracker/version.rb +1 -1
- data/spec/handler/google_tag_manager_spec.rb +23 -0
- data/spec/integration/google_tag_manager_integration_spec.rb +3 -2
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4942ee895d5b92722012f0238986942a903a0633233f49e30d9f7da65b4496ed
|
4
|
+
data.tar.gz: 7d103f64e4153ae08e38c952fda4395c65617f0534ddd166b31840448f0df22d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8bd7a5bec291496d4f49017a8dfe5572c5f748d9a783922bea3fc9cc47e646cc504d845dd1c2ec86eccbb0cc7592a8834a02e503d4f814ea6eb5d9d9f2738a0
|
7
|
+
data.tar.gz: fbc9b64700eb94ae1ab531b1ea43c4abc6f36084c2799366300f9e9c5ed5a9d8840859ed145a537be6e0a7ca23799991334255a541f42222b917c9d4fa6cb20d
|
data/CHANGELOG.md
CHANGED
@@ -10,7 +10,7 @@ class Rack::Tracker::GoogleTagManager < Rack::Tracker::Handler
|
|
10
10
|
# Sub! is enough, in well formed html there's only one head or body tag.
|
11
11
|
# Block syntax need to be used, otherwise backslashes in input will mess the output.
|
12
12
|
# @see http://stackoverflow.com/a/4149087/518204 and https://github.com/railslove/rack-tracker/issues/50
|
13
|
-
response.sub! %r{<head
|
13
|
+
response.sub! %r{<head.*?>} do |m|
|
14
14
|
m.to_s << self.render_head
|
15
15
|
end
|
16
16
|
response.sub! %r{<body.*?>} do |m|
|
@@ -1,23 +1,29 @@
|
|
1
1
|
<% if container %>
|
2
|
-
<% unless options[:turbolinks] %>
|
3
|
-
<% if events.any? %>
|
4
|
-
<script>
|
5
|
-
dataLayer = [];
|
6
|
-
dataLayer.push(<%= events.map(&:write).join(', ') %>);
|
7
|
-
</script>
|
8
|
-
<% end %>
|
9
|
-
<% end %>
|
10
|
-
|
11
2
|
<script>
|
3
|
+
dataLayer = [];
|
4
|
+
|
12
5
|
<% if options[:turbolinks] %>
|
13
6
|
document.addEventListener('turbolinks:load', function(event) {
|
14
7
|
var url = event.data.url;
|
15
|
-
|
16
|
-
|
17
|
-
|
8
|
+
dataLayer.push({'event':'pageView','virtualUrl': url});
|
9
|
+
});
|
10
|
+
document.addEventListener('turbo:load', function(event) {
|
11
|
+
var url = event.detail.url;
|
18
12
|
dataLayer.push({'event':'pageView','virtualUrl': url});
|
19
13
|
});
|
20
14
|
<% end %>
|
15
|
+
</script>
|
16
|
+
|
17
|
+
<% if events.any? %>
|
18
|
+
<script>
|
19
|
+
<%# Generates unique script tags to ensure that turbo/turbolinks include %>
|
20
|
+
<%# them in the document even if the same event happens more than once %>
|
21
|
+
// Unique Script ID: <%= SecureRandom.base64(8) %>
|
22
|
+
dataLayer.push(<%= events.map(&:write).join(', ') %>);
|
23
|
+
</script>
|
24
|
+
<% end %>
|
25
|
+
|
26
|
+
<script>
|
21
27
|
(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
|
22
28
|
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
|
23
29
|
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
|
data/lib/rack/tracker/version.rb
CHANGED
@@ -32,4 +32,27 @@ RSpec.describe Rack::Tracker::GoogleTagManager do
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
+
describe '#inject' do
|
36
|
+
subject { handler_object.inject(example_response) }
|
37
|
+
let(:handler_object) { described_class.new(env, container: 'somebody') }
|
38
|
+
|
39
|
+
before do
|
40
|
+
allow(handler_object).to receive(:render_head).and_return('<script>"HEAD"</script>')
|
41
|
+
allow(handler_object).to receive(:render_body).and_return('<script>"BODY"</script>')
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'with one line html response' do
|
45
|
+
let(:example_response) { "<html><head></head><body></body></html>" }
|
46
|
+
|
47
|
+
it 'will have render_head content in head tag' do
|
48
|
+
expect(subject).to match(%r{<head>.*<script>"HEAD"</script>.*</head>})
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'will have render_body content in body tag' do
|
52
|
+
expect(subject).to match(%r{<body>.*<script>"BODY"</script>.*</body>})
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
35
58
|
end
|
@@ -23,7 +23,7 @@ RSpec.describe "Google Tag Manager Integration" do
|
|
23
23
|
expect(page.find("body")).to have_xpath '//body/noscript/iframe[@src="https://www.googletagmanager.com/ns.html?id=GTM-ABCDEF"]'
|
24
24
|
end
|
25
25
|
|
26
|
-
it "embeds
|
26
|
+
it "embeds turbolinks and turbo observers if requested" do
|
27
27
|
visit '/'
|
28
28
|
expect(page.find("head")).to_not have_content "turbolinks:load"
|
29
29
|
setup_app(action: :google_tag_manager) do |tracker|
|
@@ -31,5 +31,6 @@ RSpec.describe "Google Tag Manager Integration" do
|
|
31
31
|
end
|
32
32
|
visit '/'
|
33
33
|
expect(page.find("head")).to have_content "turbolinks:load"
|
34
|
+
expect(page.find("head")).to have_content "turbo:load"
|
34
35
|
end
|
35
|
-
end
|
36
|
+
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-tracker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.13.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lars Brillert
|
8
8
|
- Marco Schaden
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-07-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
@@ -251,7 +251,7 @@ homepage: https://github.com/railslove/rack-tracker
|
|
251
251
|
licenses:
|
252
252
|
- MIT
|
253
253
|
metadata: {}
|
254
|
-
post_install_message:
|
254
|
+
post_install_message:
|
255
255
|
rdoc_options: []
|
256
256
|
require_paths:
|
257
257
|
- lib
|
@@ -266,8 +266,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
266
266
|
- !ruby/object:Gem::Version
|
267
267
|
version: '0'
|
268
268
|
requirements: []
|
269
|
-
rubygems_version: 3.0.
|
270
|
-
signing_key:
|
269
|
+
rubygems_version: 3.0.8
|
270
|
+
signing_key:
|
271
271
|
specification_version: 4
|
272
272
|
summary: Tracking made easy
|
273
273
|
test_files:
|