class Thrifty::HTTP::Server::ErrMiddleware
Public Class Methods
new(app, name)
click to toggle source
# File lib/thrifty/http_server/err_middleware.rb, line 4 def initialize(app, name) @log = Thrifty.get_logger(name) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/thrifty/http_server/err_middleware.rb, line 9 def call(env) @app.call(env) rescue Exception => e @log.error(e, clean_env(env)) body = dump_exception(e) [ 500, { Rack::CONTENT_TYPE => 'text/plain', Rack::CONTENT_LENGTH => Rack::Utils.bytesize(body).to_s, }, [body], ] end
Private Instance Methods
clean_env(env)
click to toggle source
# File lib/thrifty/http_server/err_middleware.rb, line 26 def clean_env(env) env.inject({}) do |ac, pair| case when pair[0] =~ /\A(rack|puma)\./ ac else ac.merge! pair[0] => pair[1] end end end
dump_exception(exception)
click to toggle source
# File lib/thrifty/http_server/err_middleware.rb, line 37 def dump_exception(exception) string = "#{exception.class}: #{exception.message}\n" string << exception.backtrace.map { |l| "\t#{l}" }.join("\n") string end