Class: Pry::LastException

Inherits:
BasicObject
Defined in:
lib/pry/last_exception.rb

Overview

LastException is a proxy class who wraps an Exception object for #last_exception. it extends the exception object with methods that help pry commands be useful.

the original exception object is not modified and method calls are forwarded to the wrapped exception object.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(e) ⇒ LastException

Returns a new instance of LastException



12
13
14
15
16
# File 'lib/pry/last_exception.rb', line 12

def initialize(e)
  @e = e
  @bt_index = 0
  @file, @line = bt_source_location_for(0)
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object



18
19
20
21
22
23
24
# File 'lib/pry/last_exception.rb', line 18

def method_missing(name, *args, &block)
  if @e.respond_to?(name)
    @e.public_send(name, *args, &block)
  else
    super
  end
end

Instance Attribute Details

#bt_indexObject

Returns the value of attribute bt_index



10
11
12
# File 'lib/pry/last_exception.rb', line 10

def bt_index
  @bt_index
end

Instance Method Details

#bt_source_location_for(index) ⇒ Object



53
54
55
56
# File 'lib/pry/last_exception.rb', line 53

def bt_source_location_for(index)
  backtrace[index] =~ /(.*):(\d+)/
  [$1, $2.to_i]
end

#fileString

Returns the path to a file for the current backtrace. see #bt_index.

Returns:

  • (String)

    returns the path to a file for the current backtrace. see #bt_index.



34
35
36
# File 'lib/pry/last_exception.rb', line 34

def file
  @file
end

#inc_bt_indexObject



58
59
60
# File 'lib/pry/last_exception.rb', line 58

def inc_bt_index
  @bt_index = (@bt_index + 1) % backtrace.size
end

#lineFixnum

Returns the line for the current backtrace. see #bt_index.

Returns:

  • (Fixnum)

    returns the line for the current backtrace. see #bt_index.



42
43
44
# File 'lib/pry/last_exception.rb', line 42

def line
  @line
end

#respond_to_missing?(name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


26
27
28
# File 'lib/pry/last_exception.rb', line 26

def respond_to_missing?(name, include_private = false)
  @e.respond_to?(name)
end

#wrapped_exceptionException

Returns the wrapped exception

Returns:

  • (Exception)

    returns the wrapped exception



49
50
51
# File 'lib/pry/last_exception.rb', line 49

def wrapped_exception
  @e
end