class SimpleAnalyticsRails::Middleware::JavascriptInjection

This receives the request payload and injects the JavaScript snippet to the HTML. It's injected just before the </head> element.

Public Class Methods

new(app) click to toggle source
# File lib/simple_analytics_rails/middleware/javascript_injection.rb, line 5
def initialize(app)
  @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/simple_analytics_rails/middleware/javascript_injection.rb, line 9
def call(env)
  status, headers, response = @app.call(env)

  if headers && headers["Content-Type"]&.include?("text/html")
    response = inject_javascript_to_response(response)
  end

  [status, headers, response]
end

Private Instance Methods

inject_javascript_to_response(response) click to toggle source
# File lib/simple_analytics_rails/middleware/javascript_injection.rb, line 21
def inject_javascript_to_response(response)
  if SimpleAnalyticsRails.configuration.enabled? && response.respond_to?("[]")
    response[0].gsub!("</head>", "#{javascript_script.head_html}</head>")
    response[0].gsub!("</body>", "#{javascript_script.body_html}</body>")
  end

  response
end
javascript_script() click to toggle source
# File lib/simple_analytics_rails/middleware/javascript_injection.rb, line 30
def javascript_script
  @javascript_script ||= SimpleAnalyticsRails::JavascriptScript.new
end