module ServiceTemplate::GrapeExtenders

Public Class Methods

extended(modified_class) click to toggle source
# File lib/service_template/grape_extenders.rb, line 3
def self.extended(modified_class)
  # when extended, set the exceptions to handle

  # if AR is being used, rescue from common AR errors
  if defined?(::ActiveRecord)
    modified_class.rescue_from ::ActiveRecord::RecordNotFound do |e|
      err = ServiceTemplate::JsonError.new(:record_not_found, 'record not found')
      ServiceTemplate::Logger.logger.debug ServiceTemplate::Logger.response(404, {}, err)
      rack_response(err.to_json, 404)
    end
    modified_class.rescue_from ::ActiveRecord::RecordInvalid do |e|
      err = ServiceTemplate::JsonError.new(:unprocessable_entity, e.record.errors.messages)
      ServiceTemplate::Logger.logger.debug ServiceTemplate::Logger.response(422, {}, err)
      rack_response(err.to_json, 422)
    end
  end

  # if AASM is being used, rescue from invalid transitions
  if defined?(::AASM)
    modified_class.rescue_from ::AASM::InvalidTransition do |e|
      err = ServiceTemplate::JsonError.new(:unprocessable_entity, e.message)
      ServiceTemplate::Logger.logger.debug ServiceTemplate::Logger.response(422, {}, err)
      rack_response(err.to_json, 422)
    end
  end
end