Sha256: b2199ed52e2501e008e05e05e47fe2ce88840a30f59545259d848820bb454c1d
Contents?: true
Size: 678 Bytes
Versions: 2
Compression:
Stored size: 678 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 yield rescue *[Exception, @handlers.keys].flatten => ex get_handler(ex).call(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
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rack-app-0.14.0 | lib/rack/app/error_handler.rb |
rack-app-0.13.0 | lib/rack/app/error_handler.rb |