class ErrorSerializer

Attributes

errors[R]
source[R]
title[R]

Public Class Methods

new(errors, source: nil, title: nil) click to toggle source
# File lib/generators/disco_app/react/templates/app/serializers/error_serializer.rb, line 5
def initialize(errors, source: nil, title: nil)
  @errors = errors
  @source = source
  @title = title
end

Public Instance Methods

serializable_hash() click to toggle source
# File lib/generators/disco_app/react/templates/app/serializers/error_serializer.rb, line 15
def serializable_hash
  {
    errors: formatted_errors
  }
end
serialized_json() click to toggle source
# File lib/generators/disco_app/react/templates/app/serializers/error_serializer.rb, line 11
def serialized_json
  serializable_hash.to_json
end

Private Instance Methods

errors_from_active_model() click to toggle source
# File lib/generators/disco_app/react/templates/app/serializers/error_serializer.rb, line 30
def errors_from_active_model
  error_array = []

  errors.keys.each do |field|
    errors.full_messages_for(field).each do |error|
      error_array << {
        source: { pointer: "/data/attributes/#{field}" },
        title: title || 'Unprocessable entity',
        detail: error
      }
    end
  end

  error_array
end
errors_from_exception() click to toggle source
# File lib/generators/disco_app/react/templates/app/serializers/error_serializer.rb, line 46
def errors_from_exception
  error = {
    title: title || errors.class.name.demodulize || 'Unknown error',
    detail: errors.message
  }

  error[:source] = { pointer: source } if source

  [error]
end
errors_from_string() click to toggle source
# File lib/generators/disco_app/react/templates/app/serializers/error_serializer.rb, line 57
def errors_from_string
  error = {
    title: title || 'Unknown error',
    detail: errors
  }

  error[:source] = { pointer: source } if source

  [error]
end
exception_error?() click to toggle source
# File lib/generators/disco_app/react/templates/app/serializers/error_serializer.rb, line 68
def exception_error?
  errors.is_a?(StandardError)
end
formatted_errors() click to toggle source
# File lib/generators/disco_app/react/templates/app/serializers/error_serializer.rb, line 23
def formatted_errors
  return errors_from_exception if exception_error?
  return errors_from_string if string_error?

  errors_from_active_model
end
string_error?() click to toggle source
# File lib/generators/disco_app/react/templates/app/serializers/error_serializer.rb, line 72
def string_error?
  errors.is_a?(String)
end