Sha256: 9ae9e068bc31948d86fb924339a65cfdeb4ceb342890031ffd736cf23d615bb7

Contents?: true

Size: 1.11 KB

Versions: 42

Compression:

Stored size: 1.11 KB

Contents

module Rao
  module Api
    module ServiceController::ExceptionHandlingConcern
      extend ActiveSupport::Concern

      included do
        rescue_from Exception do |exception|
          handle_exception(exception)
        end

        rescue_from ActiveRecord::RecordNotFound do |exception|
          handle_404(exception)
        end
      end

      private

      def handle_404(exception = nil)
        respond_to do |format|
          format.json { render json: { error: (exception.try(:message) || 'Not found') }, status: 404 }
        end
      end

      def handle_exception(exception)
        if Rails.env.development? || Rails.env.test?
          error = { message: exception.message }

          error[:application_trace] = Rails.backtrace_cleaner.clean(exception.backtrace)
          error[:full_trace] = exception.backtrace

          respond_to do |format|
            format.json { render json: error, status: 500 }
          end
        else
          respond_to do |format|
            format.json { render json: { error: 'Internal server error.' }, status: 500 }
          end
        end
      end
    end
  end
end

Version data entries

42 entries across 42 versions & 1 rubygems

Version Path
rao-api-service_controller-0.0.49.pre app/concerns/rao/api/service_controller/exception_handling_concern.rb
rao-api-service_controller-0.0.48.pre app/concerns/rao/api/service_controller/exception_handling_concern.rb
rao-api-service_controller-0.0.47.pre app/concerns/rao/api/service_controller/exception_handling_concern.rb
rao-api-service_controller-0.0.46.pre app/concerns/rao/api/service_controller/exception_handling_concern.rb
rao-api-service_controller-0.0.45.pre app/concerns/rao/api/service_controller/exception_handling_concern.rb
rao-api-service_controller-0.0.44.pre app/concerns/rao/api/service_controller/exception_handling_concern.rb
rao-api-service_controller-0.0.43.pre app/concerns/rao/api/service_controller/exception_handling_concern.rb
rao-api-service_controller-0.0.42.pre app/concerns/rao/api/service_controller/exception_handling_concern.rb
rao-api-service_controller-0.0.41.pre app/concerns/rao/api/service_controller/exception_handling_concern.rb
rao-api-service_controller-0.0.40.pre app/concerns/rao/api/service_controller/exception_handling_concern.rb
rao-api-service_controller-0.0.39.pre app/concerns/rao/api/service_controller/exception_handling_concern.rb
rao-api-service_controller-0.0.38.pre app/concerns/rao/api/service_controller/exception_handling_concern.rb
rao-api-service_controller-0.0.37.pre app/concerns/rao/api/service_controller/exception_handling_concern.rb
rao-api-service_controller-0.0.36.pre app/concerns/rao/api/service_controller/exception_handling_concern.rb
rao-api-service_controller-0.0.35.pre app/concerns/rao/api/service_controller/exception_handling_concern.rb
rao-api-service_controller-0.0.34.pre app/concerns/rao/api/service_controller/exception_handling_concern.rb
rao-api-service_controller-0.0.33.pre app/concerns/rao/api/service_controller/exception_handling_concern.rb
rao-api-service_controller-0.0.32.pre app/concerns/rao/api/service_controller/exception_handling_concern.rb
rao-api-service_controller-0.0.31.pre app/concerns/rao/api/service_controller/exception_handling_concern.rb
rao-api-service_controller-0.0.30.pre app/concerns/rao/api/service_controller/exception_handling_concern.rb