From 85c671e2885b734b5c3188ae194e3d330f552789 Mon Sep 17 00:00:00 2001 From: Vital Ryabchinskiy Date: Thu, 26 Apr 2018 20:15:22 +0000 Subject: [PATCH] Fix for frozen response --- .gitignore | 1 + lib/rack/tracker/google_tag_manager/google_tag_manager.rb | 5 ++--- lib/rack/tracker/handler.rb | 3 +-- 3 files changed, 4 insertions(+), 5 deletions(-) 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{} do |m| + response.sub %r{} do |m| self.render << m.to_s end - response end def write_event(event)