class Speedup::Middleware

Public Class Methods

new(app) click to toggle source
# File lib/speedup/middleware.rb, line 5
def initialize(app)
  @app = app
  @redirects = []
end

Public Instance Methods

call(env) click to toggle source
# File lib/speedup/middleware.rb, line 10
def call(env)
  return @app.call(env) if !Speedup.enabled?

  Speedup.setup_request(env['action_dispatch.request_id'])
  status, headers, body = @app.call(env)
  Speedup.request.save

  if Speedup.show_bar? && headers['Content-Type'] =~ /text\/html/
    case status.to_i
    when 200..299, 400..500
      body = SpeedupBody.new(body, @redirects)
      headers['Content-Length'] = (headers['Content-Length'].to_i + body.bar_html.length).to_s if headers['Content-Length'] && body.render_bar?
      @redirects = []
    when 300..400
      @redirects.push(Speedup.request.id)
    end
  end

  [status, headers, body]
rescue Exception => exception
   Speedup.request && Speedup.request.save
  raise exception
end
speedup_request?(env) click to toggle source
# File lib/speedup/middleware.rb, line 34
def speedup_request?(env)
  env['REQUEST_PATH'].starts_with?('/speedup_rails')
end