class Terrific::Error

Attributes

exception[RW]
inner_message[R]
inner_type[R]

Public Class Methods

new(exception, options = {}) click to toggle source
# File lib/terrific/error.rb, line 5
def initialize(exception, options = {})
  @exception = exception
  @inner_type = options.fetch(:type, default_type)
  @inner_message = options.fetch(:message, default_message)
end

Public Instance Methods

as_json(options = {}) click to toggle source
# File lib/terrific/error.rb, line 19
def as_json(options = {})
  { type: type, message: message }
end
message() click to toggle source
# File lib/terrific/error.rb, line 15
def message
  @message ||= apply(inner_message)
end
type() click to toggle source
# File lib/terrific/error.rb, line 11
def type
  @type ||= apply(inner_type)
end

Private Instance Methods

apply(inner) click to toggle source
# File lib/terrific/error.rb, line 26
def apply(inner)
  if inner.respond_to?(:call)
    inner.call(exception)
  else
    inner
  end
end
default_message() click to toggle source
# File lib/terrific/error.rb, line 38
def default_message
  I18n.t(type, scope: [:terrific, :messages], default: exception.message)
end
default_type() click to toggle source
# File lib/terrific/error.rb, line 34
def default_type
  exception.class.name.split("::").last.underscore
end