class BammLog::ExceptionMiddleware

Attributes

env[R]
logger[R]
request[R]

Public Class Methods

new(app, options={}) click to toggle source
# File lib/bamm_log/exception_middleware.rb, line 7
def initialize(app, options={})
  @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/bamm_log/exception_middleware.rb, line 11
def call(env)
  begin
    @request_id = SecureRandom.base64(24).tr('+/=lIO0', 'pqrsxyz')
    @start_time = Time.now
    @env = env

    build_request
    log_start
    log_params

    begin
      call = @app.call(env)
      @end_time = Time.now
      log_end
      call
    rescue Exception => e
      @end_time = Time.now
      log_exception(e)
      log_end
      @app.call(env)
    end
  rescue Exception => e
    log_exception(e)
  end
end

Private Instance Methods

build_request() click to toggle source
# File lib/bamm_log/exception_middleware.rb, line 39
def build_request
  @request = Rack::Request.new(env)
end
log_end() click to toggle source
# File lib/bamm_log/exception_middleware.rb, line 63
def log_end
  print "Ended #{env['REQUEST_METHOD']} \"#{env['REQUEST_URI']}\" in #{request_time_ms} ms"
end
log_exception(e) click to toggle source
# File lib/bamm_log/exception_middleware.rb, line 55
def log_exception(e)
  print "Bamm! #{e.class}: #{e.message}"

  e.backtrace.each do |line|
    print "#{line}"
  end
end
log_params() click to toggle source
# File lib/bamm_log/exception_middleware.rb, line 51
def log_params
  print "Parameters: #{request_params.to_hash.inspect}"
end
log_start() click to toggle source
# File lib/bamm_log/exception_middleware.rb, line 47
def log_start
  print "Started #{env['REQUEST_METHOD']} \"#{env['REQUEST_URI']}\""
end
print(message) click to toggle source
request_body_params?() click to toggle source
# File lib/bamm_log/exception_middleware.rb, line 80
def request_body_params?
  ['POST', 'PUT', 'PATCH'].include? env['REQUEST_METHOD']
end
request_params() click to toggle source
# File lib/bamm_log/exception_middleware.rb, line 43
def request_params
  request.params.except(:route_info)
end
request_time_ms() click to toggle source
# File lib/bamm_log/exception_middleware.rb, line 67
def request_time_ms
  (@end_time-@start_time).round(4)
end