Class: Rack::Tracker::GoogleTagManager

Inherits:
Handler
  • Object
show all
Defined in:
lib/rack/tracker/google_tag_manager/google_tag_manager.rb

Defined Under Namespace

Classes: Push

Constant Summary

Constants included from JavaScriptHelper

JavaScriptHelper::JS_ESCAPE_MAP

Instance Attribute Summary

Attributes inherited from Handler

#env, #options

Instance Method Summary collapse

Methods inherited from Handler

#dnt_header_opt_out?, #events, #handler_name, #initialize, process_track, #render, track, #tracker_options, #write_event

Methods included from JavaScriptHelper

#escape_javascript

Constructor Details

This class inherits a constructor from Rack::Tracker::Handler

Instance Method Details

#containerObject



22
23
24
# File 'lib/rack/tracker/google_tag_manager/google_tag_manager.rb', line 22

def container
  options[:container].respond_to?(:call) ? options[:container].call(env) : options[:container]
end

#inject(response) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/rack/tracker/google_tag_manager/google_tag_manager.rb', line 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{<head.*?>} do |m|
    m.to_s << self.render_head
  end
  response.sub! %r{<body.*?>} do |m|
    m.to_s << self.render_body
  end
  response
end

#render_bodyObject



30
31
32
# File 'lib/rack/tracker/google_tag_manager/google_tag_manager.rb', line 30

def render_body
  Tilt.new( File.join( File.dirname(__FILE__), 'template', 'google_tag_manager_body.erb') ).render(self)
end

#render_headObject



26
27
28
# File 'lib/rack/tracker/google_tag_manager/google_tag_manager.rb', line 26

def render_head
  Tilt.new( File.join( File.dirname(__FILE__), 'template', 'google_tag_manager_head.erb') ).render(self)
end