class Rack::AvvoIgnite
Public Class Methods
new(app, options = {})
click to toggle source
# File lib/rack/avvo_ignite.rb, line 4 def initialize(app, options = {}) @app = app @ignite_host = options[:host] || "ia.avvo.com" @tracker_code = options[:code] end
Public Instance Methods
call(env)
click to toggle source
# File lib/rack/avvo_ignite.rb, line 10 def call(env) status, headers, response = @app.call(env) if headers['Content-Type'].to_s.include?('text/html') # Only update HTML bodies response.each do |part| if part.rindex('</body>') part.gsub!('</body>', message + '</body>') headers['Content-Length'] = (headers['Content-Length'].to_i + message.length).to_s end end end [status, headers, response] end
Private Instance Methods
message()
click to toggle source
# File lib/rack/avvo_ignite.rb, line 27 def message %{<script type="text/javascript">(function(){setTimeout(function(){var s = document.createElement('script');s.type="text/javascript";s.async=true;s.src="//#{@ignite_host}/tracker/#{@tracker_code}.js";var x=document.getElementsByTagName('script')[0];x.parentNode.insertBefore(s,x);},1)})();</script>} end