diff --git a/.gitignore b/.gitignore
index a955cfa..52bf0af 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,3 +16,4 @@ test/tmp
test/version_tmp
tmp
.DS_Store
+.idea
\ No newline at end of file
diff --git a/lib/rack/tracker/google_tag_manager/google_tag_manager.rb b/lib/rack/tracker/google_tag_manager/google_tag_manager.rb
index 2db9d2b..46a5821 100644
--- a/lib/rack/tracker/google_tag_manager/google_tag_manager.rb
+++ b/lib/rack/tracker/google_tag_manager/google_tag_manager.rb
@@ -10,13 +10,12 @@ def inject(response)
# Sub! is enough, in well formed html there's only one head or body tag.
# Block syntax need to be used, otherwise backslashes in input will mess the output.
# @see http://stackoverflow.com/a/4149087/518204 and https://github.com/railslove/rack-tracker/issues/50
- response.sub! %r{
} do |m|
+ response_dup = response.sub %r{} do |m|
m.to_s << self.render_head
end
- response.sub! %r{} do |m|
+ response_dup.sub %r{} do |m|
m.to_s << self.render_body
end
- response
end
def container
diff --git a/lib/rack/tracker/handler.rb b/lib/rack/tracker/handler.rb
index 25c7788..c203791 100644
--- a/lib/rack/tracker/handler.rb
+++ b/lib/rack/tracker/handler.rb
@@ -46,10 +46,9 @@ def inject(response)
# Sub! is enough, in well formed html there's only one head or body tag.
# Block syntax need to be used, otherwise backslashes in input will mess the output.
# @see http://stackoverflow.com/a/4149087/518204 and https://github.com/railslove/rack-tracker/issues/50
- response.sub! %r{#{self.position}>} do |m|
+ response.sub %r{#{self.position}>} do |m|
self.render << m.to_s
end
- response
end
def write_event(event)