Sha256: 912b74372b612eb3cf7dc3c4ce8bfea4dd024b185b2467f33c8d5e11bb1345b9

Contents?: true

Size: 805 Bytes

Versions: 44

Compression:

Stored size: 805 Bytes

Contents

module Deas

  class ErrorHandler

    def self.run(*args)
      self.new(*args).run
    end

    def initialize(exception, sinatra_call, error_procs)
      @exception    = exception
      @sinatra_call = sinatra_call

      @error_procs = [*error_procs].compact
    end

    def run
      response = nil
      @error_procs.each do |error_proc|
        begin
          result = @sinatra_call.instance_exec(@exception, &error_proc)
          response = result if result
        rescue Exception => proc_exception
          @exception = proc_exception
          # reset the response if an exception occurs while evaulating the
          # error procs -- a new exception will now be handled by the
          # remaining procs
          response = nil
        end
      end
      response
    end

  end

end

Version data entries

44 entries across 44 versions & 1 rubygems

Version Path
deas-0.36.0 lib/deas/error_handler.rb
deas-0.35.0 lib/deas/error_handler.rb
deas-0.34.0 lib/deas/error_handler.rb
deas-0.33.0 lib/deas/error_handler.rb
deas-0.32.0 lib/deas/error_handler.rb
deas-0.31.0 lib/deas/error_handler.rb
deas-0.30.0 lib/deas/error_handler.rb
deas-0.29.0 lib/deas/error_handler.rb
deas-0.28.0 lib/deas/error_handler.rb
deas-0.27.0 lib/deas/error_handler.rb
deas-0.26.0 lib/deas/error_handler.rb
deas-0.25.0 lib/deas/error_handler.rb
deas-0.24.1 lib/deas/error_handler.rb
deas-0.24.0 lib/deas/error_handler.rb
deas-0.23.4 lib/deas/error_handler.rb
deas-0.23.3 lib/deas/error_handler.rb
deas-0.23.2 lib/deas/error_handler.rb
deas-0.23.1 lib/deas/error_handler.rb
deas-0.23.0 lib/deas/error_handler.rb
deas-0.22.1 lib/deas/error_handler.rb