rack-tracker 1.12.1 → 1.13.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/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:
|