Sha256: dd22387e27724ba59733bc129ed6e3c9b013682d55df93b9c34960f71f3a23a4

Contents?: true

Size: 878 Bytes

Versions: 4

Compression:

Stored size: 878 Bytes

Contents

module Wayback
  # Custom error class for rescuing from all Wayback errors
  class Error < StandardError
    attr_reader :wrapped_exception

    # @return [Hash]
    def self.errors
      @errors ||= Hash[descendants.map{|klass| [klass.const_get(:HTTP_STATUS_CODE), klass]}]
    end

    # @return [Array]
    def self.descendants
      ObjectSpace.each_object(::Class).select{|klass| klass < self}
    end

    # Initializes a new Error object
    #
    # @param exception [Exception, String]
    # @param response_headers [Hash]
    # @return [Wayback::Error]
    def initialize(exception=$!, response_headers={})
      @wrapped_exception = exception
      exception.respond_to?(:backtrace) ? super(exception.message) : super(exception.to_s)
    end

    def backtrace
      @wrapped_exception.respond_to?(:backtrace) ? @wrapped_exception.backtrace : super
    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
wayback-0.3.1 lib/wayback/error.rb
wayback-0.2.1 lib/wayback/error.rb
wayback-0.2.0 lib/wayback/error.rb
wayback-0.1.0 lib/wayback/error.rb