Sha256: e41bc4704dd2cd53053aa016114c94830663ecc6c618348d4a964bff31bfd8f9

Contents?: true

Size: 661 Bytes

Versions: 1

Compression:

Stored size: 661 Bytes

Contents

module Pliny::Middleware
  class RescueErrors
    def initialize(app, options = {})
      @app = app
      @raise = options[:raise]
    end

    def call(env)
      @app.call(env)
    rescue Pliny::Errors::Error => e
      render(e, env)
    rescue Exception => e
      if @raise
        raise
      else
        # Pliny.log_exception(e)
        render(Pliny::Errors::InternalServerError.new, env)
      end
    end

    private

    def render(e, env)
      headers = { "Content-Type" => "application/json; charset=utf-8" }
      error = { id: e.id, message: e.message, status: e.status }
      [e.status, headers, [MultiJson.encode(error)]]
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pliny-0.0.4 lib/pliny/middleware/rescue_errors.rb