Sha256: d6958c73c4a7f1f404e300373367a8f2b99cce00f92f13ca7482b572426bdf76
Contents?: true
Size: 768 Bytes
Versions: 8
Compression:
Stored size: 768 Bytes
Contents
class Rack::App::ErrorHandler def initialize @handlers = {} end def register_handler(exception_classes, handler_block) exception_classes.each do |exception_class| @handlers[exception_class]= handler_block end nil end def execute_with_error_handling_for(instance, endpoint_method_name) instance.__send__(endpoint_method_name) rescue *[Exception, @handlers.keys].flatten => ex instance.instance_exec(ex, &get_handler(ex)) end protected def get_handler(ex) explicit(ex) || parent(ex) || raise(ex) end def explicit(ex) @handlers[ex.class] end def parent(ex) handler = @handlers.find { |exception_class, handler| ex.class <= exception_class } return handler.nil? ? nil : handler.last end end
Version data entries
8 entries across 8 versions & 1 rubygems