pry-exception_explorer 0.1.7 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +1 -4
- data/lib/pry-exception_explorer/cli.rb +2 -1
- data/lib/pry-exception_explorer/core_ext.rb +50 -43
- data/lib/pry-exception_explorer/version.rb +1 -1
- data/pry-exception_explorer.gemspec +3 -3
- metadata +40 -47
data/README.md
CHANGED
@@ -5,9 +5,6 @@ pry-exception_explorer
|
|
5
5
|
|
6
6
|
_Enter the context of exceptions_
|
7
7
|
|
8
|
-
**Please note, this is a first release for pry-exception_explorer and as such it may still have teething
|
9
|
-
problems. If you encounter any quirks or crashes please [file an issue](https://github.com/pry/pry-exception_explorer/issues)**
|
10
|
-
|
11
8
|
`pry-exception_explorer` is an interactive error console for MRI Ruby 1.9.2+ inspired by the [Hammertime](https://github.com/avdi/hammertime)
|
12
9
|
gem, which was in turn inspired by consoles found in the Lisp and Smalltalk environments. `pry-exception_explorer` is a plugin
|
13
10
|
for the [Pry REPL](http://pry.github.com).
|
@@ -21,6 +18,7 @@ parent frames (using [pry-stack_explorer](https://github.com/pry/pry-stack_explo
|
|
21
18
|
* Install the [gem](https://rubygems.org/gems/pry-exception_explorer): `gem install pry-exception_explorer`
|
22
19
|
* Read the [documentation](http://rdoc.info/github/banister/pry-exception_explorer/master/file/README.md)
|
23
20
|
* See the [source code](http://github.com/banister/pry-exception_explorer)
|
21
|
+
* See the [wiki](https://github.com/pry/pry-exception_explorer/wiki) for in-depth usage information.
|
24
22
|
|
25
23
|
Example:
|
26
24
|
--------
|
@@ -104,7 +102,6 @@ Features and limitations
|
|
104
102
|
|
105
103
|
* Only works on Ruby 1.9.2+ (including 1.9.3) MRI.
|
106
104
|
* Limited support for `C` exceptions -- only some exceptions that arise from C code are caught.
|
107
|
-
* Wiki documentation coming soon ;)
|
108
105
|
|
109
106
|
Contact
|
110
107
|
-------
|
@@ -1,6 +1,7 @@
|
|
1
1
|
Pry::CLI.add_options do
|
2
2
|
|
3
|
-
on :w, :wrap, "Run the
|
3
|
+
on :w, :wrap, "Run the provided FILE wrapped by the exception explorer", true do |file|
|
4
|
+
require 'pry-exception_explorer'
|
4
5
|
PryExceptionExplorer.wrap do
|
5
6
|
require file
|
6
7
|
end
|
@@ -27,70 +27,77 @@ class Exception
|
|
27
27
|
end
|
28
28
|
|
29
29
|
# `PryExceptionExplorer` monkey-patches to `Object`
|
30
|
-
|
31
|
-
|
32
|
-
# We monkey-patch the `raise` method so we can intercept exceptions
|
33
|
-
def raise(*args)
|
34
|
-
exception, string, array = args
|
30
|
+
module PryExceptionExplorer
|
31
|
+
module CoreExtensions
|
35
32
|
|
36
|
-
|
37
|
-
|
38
|
-
exception =
|
39
|
-
end
|
33
|
+
# We monkey-patch the `raise` method so we can intercept exceptions
|
34
|
+
def raise(*args)
|
35
|
+
exception, string, array = args
|
40
36
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
else
|
45
|
-
return super(*args)
|
37
|
+
if exception.is_a?(String)
|
38
|
+
string = exception
|
39
|
+
exception = RuntimeError
|
46
40
|
end
|
47
|
-
|
48
|
-
if
|
41
|
+
|
42
|
+
if exception.is_a?(Exception) || (exception.is_a?(Class) && exception < Exception)
|
49
43
|
if PryExceptionExplorer.enabled?
|
50
|
-
ex =
|
44
|
+
ex = string ? exception.exception(string) : exception.exception
|
51
45
|
else
|
52
|
-
return super(
|
46
|
+
return super(*args)
|
47
|
+
end
|
48
|
+
elsif exception.nil?
|
49
|
+
if $!
|
50
|
+
if PryExceptionExplorer.enabled?
|
51
|
+
ex = $!.exception
|
52
|
+
else
|
53
|
+
return super($!)
|
54
|
+
end
|
55
|
+
else
|
56
|
+
if PryExceptionExplorer.enabled?
|
57
|
+
ex = RuntimeError.exception
|
58
|
+
else
|
59
|
+
return super(RuntimeError)
|
60
|
+
end
|
53
61
|
end
|
54
62
|
else
|
55
63
|
if PryExceptionExplorer.enabled?
|
56
64
|
ex = RuntimeError.exception
|
57
65
|
else
|
58
|
-
return super(
|
66
|
+
return super(*args)
|
59
67
|
end
|
60
68
|
end
|
61
|
-
else
|
62
|
-
if PryExceptionExplorer.enabled?
|
63
|
-
ex = RuntimeError.exception
|
64
|
-
else
|
65
|
-
return super(*args)
|
66
|
-
end
|
67
|
-
end
|
68
69
|
|
69
|
-
|
70
|
+
ex.set_backtrace(array ? array : caller)
|
70
71
|
|
71
|
-
|
72
|
+
intercept_object = PryExceptionExplorer.intercept_object
|
72
73
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
74
|
+
# FIXME: CodeRay stuff is a hack because CodeRay generates a bunch of
|
75
|
+
# exceptions that would cause EE to infiniloop on
|
76
|
+
# intercept(Exception), find a better solution.
|
77
|
+
if PryExceptionExplorer.should_intercept_exception?(binding.of_caller(1), ex) &&
|
78
|
+
binding.of_caller(1).eval('[__method__, self.to_s]') != [:make_plugin_hash, "CodeRay::Encoders"]
|
78
79
|
|
79
|
-
|
80
|
-
|
80
|
+
ex.exception_call_stack = binding.callers.tap { |v| v.shift(1 + intercept_object.skip_num) }
|
81
|
+
PryExceptionExplorer.amend_exception_call_stack!(ex)
|
81
82
|
|
82
|
-
|
83
|
+
ex.should_intercept = true
|
83
84
|
|
84
|
-
|
85
|
-
|
85
|
+
if !PryExceptionExplorer.wrap_active?
|
86
|
+
retval = PryExceptionExplorer.enter_exception(ex, :inline => true)
|
87
|
+
end
|
86
88
|
end
|
87
|
-
end
|
88
89
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
90
|
+
if retval != PryExceptionExplorer::CONTINUE_INLINE_EXCEPTION
|
91
|
+
callcc do |cc|
|
92
|
+
ex.continuation = cc
|
93
|
+
super(ex)
|
94
|
+
end
|
93
95
|
end
|
94
96
|
end
|
95
97
|
end
|
96
98
|
end
|
99
|
+
|
100
|
+
|
101
|
+
class Object
|
102
|
+
include PryExceptionExplorer::CoreExtensions
|
103
|
+
end
|
@@ -2,17 +2,17 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "pry-exception_explorer"
|
5
|
-
s.version = "0.1.
|
5
|
+
s.version = "0.1.8"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["John Mair (banisterfiend)"]
|
9
|
-
s.date = "2012-02-
|
9
|
+
s.date = "2012-02-20"
|
10
10
|
s.description = "Enter the context of exceptions"
|
11
11
|
s.email = "jrmair@gmail.com"
|
12
12
|
s.files = [".gemtest", ".gitignore", ".travis.yml", ".yardopts", "CHANGELOG", "Gemfile", "LICENSE", "README.md", "Rakefile", "examples/example_c_inline.rb", "examples/example_inline.rb", "examples/example_wrap.rb", "lib/pry-exception_explorer.rb", "lib/pry-exception_explorer/cli.rb", "lib/pry-exception_explorer/commands.rb", "lib/pry-exception_explorer/core_ext.rb", "lib/pry-exception_explorer/intercept.rb", "lib/pry-exception_explorer/lazy_frame.rb", "lib/pry-exception_explorer/shim_builder.rb", "lib/pry-exception_explorer/version.rb", "pry-exception_explorer.gemspec", "test/helper.rb", "test/test_exceptions_in_pry.rb", "test/test_inline_exceptions.rb", "test/test_raise.rb", "test/test_wrapped_exceptions.rb"]
|
13
13
|
s.homepage = "https://github.com/banister/pry-exception_explorer"
|
14
14
|
s.require_paths = ["lib"]
|
15
|
-
s.rubygems_version = "1.8.
|
15
|
+
s.rubygems_version = "1.8.16"
|
16
16
|
s.summary = "Enter the context of exceptions"
|
17
17
|
s.test_files = ["test/helper.rb", "test/test_exceptions_in_pry.rb", "test/test_inline_exceptions.rb", "test/test_raise.rb", "test/test_wrapped_exceptions.rb"]
|
18
18
|
|
metadata
CHANGED
@@ -1,59 +1,55 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: pry-exception_explorer
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.8
|
4
5
|
prerelease:
|
5
|
-
version: 0.1.7
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- John Mair (banisterfiend)
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-02-20 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
16
15
|
name: pry-stack_explorer
|
17
|
-
|
18
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70343193135760 !ruby/object:Gem::Requirement
|
19
17
|
none: false
|
20
|
-
requirements:
|
21
|
-
- -
|
22
|
-
- !ruby/object:Gem::Version
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
23
21
|
version: 0.3.9
|
24
22
|
type: :runtime
|
25
|
-
version_requirements: *id001
|
26
|
-
- !ruby/object:Gem::Dependency
|
27
|
-
name: bacon
|
28
23
|
prerelease: false
|
29
|
-
|
24
|
+
version_requirements: *70343193135760
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: bacon
|
27
|
+
requirement: &70343193135300 !ruby/object:Gem::Requirement
|
30
28
|
none: false
|
31
|
-
requirements:
|
29
|
+
requirements:
|
32
30
|
- - ~>
|
33
|
-
- !ruby/object:Gem::Version
|
31
|
+
- !ruby/object:Gem::Version
|
34
32
|
version: 1.1.0
|
35
33
|
type: :development
|
36
|
-
version_requirements: *id002
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: rake
|
39
34
|
prerelease: false
|
40
|
-
|
35
|
+
version_requirements: *70343193135300
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rake
|
38
|
+
requirement: &70343188952860 !ruby/object:Gem::Requirement
|
41
39
|
none: false
|
42
|
-
requirements:
|
40
|
+
requirements:
|
43
41
|
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version:
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0.9'
|
46
44
|
type: :development
|
47
|
-
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70343188952860
|
48
47
|
description: Enter the context of exceptions
|
49
48
|
email: jrmair@gmail.com
|
50
49
|
executables: []
|
51
|
-
|
52
50
|
extensions: []
|
53
|
-
|
54
51
|
extra_rdoc_files: []
|
55
|
-
|
56
|
-
files:
|
52
|
+
files:
|
57
53
|
- .gemtest
|
58
54
|
- .gitignore
|
59
55
|
- .travis.yml
|
@@ -82,32 +78,29 @@ files:
|
|
82
78
|
- test/test_wrapped_exceptions.rb
|
83
79
|
homepage: https://github.com/banister/pry-exception_explorer
|
84
80
|
licenses: []
|
85
|
-
|
86
81
|
post_install_message:
|
87
82
|
rdoc_options: []
|
88
|
-
|
89
|
-
require_paths:
|
83
|
+
require_paths:
|
90
84
|
- lib
|
91
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
85
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
92
86
|
none: false
|
93
|
-
requirements:
|
94
|
-
- -
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version:
|
97
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ! '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
92
|
none: false
|
99
|
-
requirements:
|
100
|
-
- -
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
version:
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
103
97
|
requirements: []
|
104
|
-
|
105
98
|
rubyforge_project:
|
106
|
-
rubygems_version: 1.8.
|
99
|
+
rubygems_version: 1.8.16
|
107
100
|
signing_key:
|
108
101
|
specification_version: 3
|
109
102
|
summary: Enter the context of exceptions
|
110
|
-
test_files:
|
103
|
+
test_files:
|
111
104
|
- test/helper.rb
|
112
105
|
- test/test_exceptions_in_pry.rb
|
113
106
|
- test/test_inline_exceptions.rb
|