class Rack::ErrorHandling

Public Class Methods

new(app, &block) click to toggle source
# File lib/unicorn-cuba-base/rack/error_handling.rb, line 3
def initialize(app, &block)
        @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/unicorn-cuba-base/rack/error_handling.rb, line 7
def call(env)
        # save original env
        orig_env = env.dup
        begin
                return @app.call(env)
        rescue => error
                begin
                        # reset env to original since it could have been changed
                        env.clear
                        env.merge!(orig_env)

                        # set error so app can handle it
                        env["app.error"] = error

                        return @app.call(env)
                rescue
                        raise
                end
        end
end