class SnailTracker::Rails::Middleware

Attributes

app[RW]
session_key[RW]

Public Class Methods

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

Public Instance Methods

call(env) click to toggle source
# File lib/snailtracker/rails/middleware.rb, line 12
def call(env)
  session_key = get_session_key(env)
  # If no session key is set, we can't track the data,
  # so just leave.
  unless session_key
    return @app.call(env)
  end

  begin
    @app.call(env)
  rescue => exception
    begin
      SnailTracker::Rails::Error.session_key = session_key
      SnailTracker::Rails::Error.create({exception_class: exception.class.to_s, message: exception.message})
    rescue
    end
    puts "SnailTracker caught exception: #{exception}"
    raise
  end
end
get_session_key(env) click to toggle source
# File lib/snailtracker/rails/middleware.rb, line 8
def get_session_key(env)
  request = ActionDispatch::Request.new(env)
  request.cookies["snailtracker-session"]
end