class JsonapiException
Constants
- DEFAULT_STATUS
- MIME_TYPE
- VERSION
Attributes
exception[R]
opts[R]
Public Class Methods
new(exception, opts = {})
click to toggle source
# File lib/jsonapi_exception.rb, line 7 def initialize(exception, opts = {}) @exception = exception @opts = opts end
Public Instance Methods
as_json(*_)
click to toggle source
# File lib/jsonapi_exception.rb, line 55 def as_json(*_) { errors: [to_h] } end
code()
click to toggle source
# File lib/jsonapi_exception.rb, line 37 def code opts[:code] end
detail()
click to toggle source
# File lib/jsonapi_exception.rb, line 25 def detail opts.fetch(:detail, exception.message) end
for_render()
click to toggle source
# File lib/jsonapi_exception.rb, line 72 def for_render { json: as_json, status: status, content_type: MIME_TYPE } end
id()
click to toggle source
# File lib/jsonapi_exception.rb, line 33 def id opts.fetch(:id, exception.object_id) end
links()
click to toggle source
# File lib/jsonapi_exception.rb, line 41 def links opts[:links] end
meta()
click to toggle source
# File lib/jsonapi_exception.rb, line 45 def meta return opts[:meta] if opts[:meta] return unless show_exceptions? { class: exception.class.to_s, message: exception.message, backtrace: exception.backtrace } end
status()
click to toggle source
# File lib/jsonapi_exception.rb, line 29 def status opts.fetch(:status, DEFAULT_STATUS) end
title()
click to toggle source
# File lib/jsonapi_exception.rb, line 12 def title opts.fetch(:title) rescue KeyError exception .class .to_s .split("::") .last .scan(/([A-Z][^A-Z]*)/) .join(" ") .sub(/ (Error|Exception)$/, "") end
to_h()
click to toggle source
# File lib/jsonapi_exception.rb, line 61 def to_h { title: title, links: links, detail: detail, status: status.to_s, id: id, code: code }.reject { |_, v| !v } end
Private Instance Methods
show_exceptions?()
click to toggle source
# File lib/jsonapi_exception.rb, line 84 def show_exceptions? return false unless defined?(Rails) Rails.application.config.action_dispatch.show_exceptions end