module Roda::RodaPlugins::ErrorHandler::InstanceMethods
def _handle_error(e)
of 500. Run after hooks on the rack response, but if any error occurs
Handle the given exception using handle_error, using a default status
def _handle_error(e) res = @_response res.send(:initialize) res.status = 500 res = _roda_handle_route{handle_error(e)} begin _roda_after(res) rescue => e2 if errors = env['rack.errors'] errors.puts "Error in after hook processing of error handler: #{e2.class}: #{e2.message}" e2.backtrace.each{|line| errors.puts(line)} end end res end
def _roda_after(res)
Default empty implementation of _roda_after, usually
def _roda_after(res) end
def _roda_handle_main_route
If an error occurs, set the response status to 500 and call
def _roda_handle_main_route begin res = super ensure _roda_after(res) end rescue *opts[:error_handler_classes] => e _handle_error(e) end
def call
If an error occurs, set the response status to 500 and call
def call # RODA4: Remove begin res = super ensure _roda_after(res) end rescue *opts[:error_handler_classes] => e _handle_error(e) end
def handle_error(e)
the plugin without installing an error handler doesn't change
By default, have the error handler reraise the error, so using
def handle_error(e) raise e end