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 |
# File 'lib/jsonapi_errorable/exception_handler.rb', line 3 def initialize( = {}) @status = [:status] @title = [:title] = [:message] @log = [:log] end |
Instance Method Details
#backtrace_cleaner ⇒ Object
19 20 21 |
# File 'lib/jsonapi_errorable/exception_handler.rb', line 19 def backtrace_cleaner defined?(Rails) ? Rails.backtrace_cleaner : nil end |
#detail(error) ⇒ Object
27 28 29 30 31 32 33 |
# File 'lib/jsonapi_errorable/exception_handler.rb', line 27 def detail(error) if == true error. else ? .call(error) : default_detail end end |
#error_code(error) ⇒ Object
14 15 16 17 |
# File 'lib/jsonapi_errorable/exception_handler.rb', line 14 def error_code(error) status_code = status_code(error) Rack::Utils::SYMBOL_TO_STATUS_CODE.invert[status_code] end |
#error_payload(error) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/jsonapi_errorable/exception_handler.rb', line 39 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
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/jsonapi_errorable/exception_handler.rb', line 55 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
51 52 53 |
# File 'lib/jsonapi_errorable/exception_handler.rb', line 51 def log? @log != false end |
#meta(error) ⇒ Object
35 36 37 |
# File 'lib/jsonapi_errorable/exception_handler.rb', line 35 def (error) {} end |
#status_code(error) ⇒ Object
10 11 12 |
# File 'lib/jsonapi_errorable/exception_handler.rb', line 10 def status_code(error) @status || 500 end |
#title ⇒ Object
23 24 25 |
# File 'lib/jsonapi_errorable/exception_handler.rb', line 23 def title @title || 'Error' end |