module Pakyow::Routing::Behavior::ErrorHandling::API
Public Instance Methods
handle(name_exception_or_code, as: nil, &block)
click to toggle source
Registers an error handler used within a controller or request lifecycle.
@example Defining for a controller:
Pakyow::Application.controller do handle 500 do # build and send a response for `request.error` end default do # do something that might cause an error end end
@example Defining for a request lifecycle:
Pakyow::Application.controller do default do handle 500 do # build and send a response for `request.error` end # do something that might cause an error end end
@example Handling by status code:
handle 500 do # build and send a response end default do trigger 500 end
@example Handling by status name:
handle :forbidden do # build and send a response end default do trigger 403 # or, `trigger :forbidden` end
@example Handling an exception:
handle Sequel::NoMatchingRow, as: 404 do # build and send a response end default do raise Sequel::NoMatchingRow end
# File lib/pakyow/routing/controller/behavior/error_handling.rb, line 136 def handle(name_exception_or_code, as: nil, &block) if name_exception_or_code.is_a?(Class) && name_exception_or_code.ancestors.include?(Exception) raise ArgumentError, "status code is required" if as.nil? (@exceptions[name_exception_or_code] ||= []) << [Connection::Statuses.code(as), block] else status_code = Connection::Statuses.code(name_exception_or_code) (@handlers[status_code] ||= []) << [as || status_code, block] end end