Class: JsonapiErrorable::ExceptionHandler
- Inherits:
-
Object
- Object
- JsonapiErrorable::ExceptionHandler
- Defined in:
- lib/jsonapi_errorable/exception_handler.rb
Instance Method Summary collapse
- #backtrace_cleaner ⇒ Object
- #detail(error) ⇒ Object
- #error_code(error) ⇒ Object
- #error_payload(error) ⇒ Object
-
#initialize(options = {}) ⇒ ExceptionHandler
constructor
A new instance of ExceptionHandler.
- #log(error) ⇒ Object
- #log? ⇒ Boolean
- #meta(error) ⇒ Object
- #status_code(error) ⇒ Object
- #title ⇒ Object
Constructor Details
#initialize(options = {}) ⇒ ExceptionHandler
Returns a new instance of ExceptionHandler.
3 4 5 6 7 8 9 |
# File 'lib/jsonapi_errorable/exception_handler.rb', line 3 def initialize( = {}) @status = [:status] @title = [:title] @message = [:message] @meta = [:meta] @log = [:log] end |
Instance Method Details
#backtrace_cleaner ⇒ Object
20 21 22 |
# File 'lib/jsonapi_errorable/exception_handler.rb', line 20 def backtrace_cleaner defined?(Rails) ? Rails.backtrace_cleaner : nil end |
#detail(error) ⇒ Object
28 29 30 31 32 33 34 |
# File 'lib/jsonapi_errorable/exception_handler.rb', line 28 def detail(error) if @message == true error. else @message ? @message.call(error) : default_detail end end |
#error_code(error) ⇒ Object
15 16 17 18 |
# File 'lib/jsonapi_errorable/exception_handler.rb', line 15 def error_code(error) status_code = status_code(error) Rack::Utils::SYMBOL_TO_STATUS_CODE.invert[status_code] end |
#error_payload(error) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/jsonapi_errorable/exception_handler.rb', line 41 def error_payload(error) { errors: [ code: error_code(error), status: status_code(error).to_s, title: title, detail: detail(error), meta: (error) ] } end |
#log(error) ⇒ Object
57 58 59 60 61 62 63 64 65 66 |
# File 'lib/jsonapi_errorable/exception_handler.rb', line 57 def log(error) return unless log? backtrace = error.backtrace if cleaner = backtrace_cleaner backtrace = cleaner.clean(backtrace) end log_error(error, backtrace) end |
#log? ⇒ Boolean
53 54 55 |
# File 'lib/jsonapi_errorable/exception_handler.rb', line 53 def log? @log != false end |
#meta(error) ⇒ Object
36 37 38 39 |
# File 'lib/jsonapi_errorable/exception_handler.rb', line 36 def (error) return {} unless @meta.respond_to?(:call) @meta.call(error) end |
#status_code(error) ⇒ Object
11 12 13 |
# File 'lib/jsonapi_errorable/exception_handler.rb', line 11 def status_code(error) @status || 500 end |
#title ⇒ Object
24 25 26 |
# File 'lib/jsonapi_errorable/exception_handler.rb', line 24 def title @title || 'Error' end |