Sha256: c366353409fb6475094d03a62a98ba33f185b16a7e3f49787f2c471d561a9030

Contents?: true

Size: 1.11 KB

Versions: 40

Compression:

Stored size: 1.11 KB

Contents

module Rao
  module Api
    module ResourcesController::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

40 entries across 40 versions & 1 rubygems

Version Path
rao-api-resources_controller-0.0.52.pre app/concerns/rao/api/resources_controller/exception_handling_concern.rb
rao-api-resources_controller-0.0.51.pre app/concerns/rao/api/resources_controller/exception_handling_concern.rb
rao-api-resources_controller-0.0.50.pre app/concerns/rao/api/resources_controller/exception_handling_concern.rb
rao-api-resources_controller-0.0.49.pre app/concerns/rao/api/resources_controller/exception_handling_concern.rb
rao-api-resources_controller-0.0.48.pre app/concerns/rao/api/resources_controller/exception_handling_concern.rb
rao-api-resources_controller-0.0.47.pre app/concerns/rao/api/resources_controller/exception_handling_concern.rb
rao-api-resources_controller-0.0.46.pre app/concerns/rao/api/resources_controller/exception_handling_concern.rb
rao-api-resources_controller-0.0.45.pre app/concerns/rao/api/resources_controller/exception_handling_concern.rb
rao-api-resources_controller-0.0.44.pre app/concerns/rao/api/resources_controller/exception_handling_concern.rb
rao-api-resources_controller-0.0.43.pre app/concerns/rao/api/resources_controller/exception_handling_concern.rb
rao-api-resources_controller-0.0.42.pre app/concerns/rao/api/resources_controller/exception_handling_concern.rb
rao-api-resources_controller-0.0.41.pre app/concerns/rao/api/resources_controller/exception_handling_concern.rb
rao-api-resources_controller-0.0.40.pre app/concerns/rao/api/resources_controller/exception_handling_concern.rb
rao-api-resources_controller-0.0.39.pre app/concerns/rao/api/resources_controller/exception_handling_concern.rb
rao-api-resources_controller-0.0.38.pre app/concerns/rao/api/resources_controller/exception_handling_concern.rb
rao-api-resources_controller-0.0.37.pre app/concerns/rao/api/resources_controller/exception_handling_concern.rb
rao-api-resources_controller-0.0.36.pre app/concerns/rao/api/resources_controller/exception_handling_concern.rb
rao-api-resources_controller-0.0.35.pre app/concerns/rao/api/resources_controller/exception_handling_concern.rb
rao-api-resources_controller-0.0.34.pre app/concerns/rao/api/resources_controller/exception_handling_concern.rb
rao-api-resources_controller-0.0.33.pre app/concerns/rao/api/resources_controller/exception_handling_concern.rb