pry-rescue 0.13 → 0.14
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 +20 -11
- data/bin/kill-pry-rescue +37 -0
- data/lib/pry-rescue.rb +16 -6
- data/pry-rescue.gemspec +2 -2
- metadata +17 -14
data/README.md
CHANGED
|
@@ -119,31 +119,40 @@ From: examples/example.rb @ line 4 Object#test:
|
|
|
119
119
|
foo
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
-
<a name="testing">
|
|
123
122
|
Testing
|
|
124
123
|
=======
|
|
125
124
|
|
|
126
|
-
Pry-rescue comes with beta support for minitest and rspec
|
|
127
|
-
|
|
125
|
+
Pry-rescue comes with beta support for minitest and rspec: test failures will
|
|
126
|
+
drop you into pry at that location. Please feel free to try these out, and
|
|
127
|
+
leave bug reports if something is not working.
|
|
128
128
|
|
|
129
|
-
|
|
129
|
+
Note that for either of these, you will find `exit!` very handy: there is a pry
|
|
130
|
+
`exit` command that will merely drop you into the next failure.
|
|
131
|
+
|
|
132
|
+
### minitest
|
|
130
133
|
|
|
131
|
-
|
|
134
|
+
Add the following to your `test_helper.rb` or to the top of your test file.
|
|
132
135
|
|
|
133
136
|
```ruby
|
|
134
|
-
require '
|
|
137
|
+
require 'minitest/autorun'
|
|
138
|
+
require 'pry-rescue/minitest'
|
|
135
139
|
```
|
|
136
140
|
|
|
137
|
-
|
|
141
|
+
Then, when you have a failure, you can use `edit`, `edit -c`, and `edit-method`, then
|
|
142
|
+
`try-again` to re-run the tests, or run it by name (`test_foo`).
|
|
138
143
|
|
|
139
|
-
|
|
144
|
+
### rspec
|
|
145
|
+
|
|
146
|
+
Add the following to your `spec_helper.rb` or to the top of your test file.
|
|
140
147
|
|
|
141
148
|
```ruby
|
|
142
|
-
require '
|
|
143
|
-
require 'pry-rescue/minitest'
|
|
149
|
+
require 'pry-rescue/rspec'
|
|
144
150
|
```
|
|
145
151
|
|
|
146
|
-
|
|
152
|
+
Note that, unlike minitest, rspec creates odd structures instead of classes, so
|
|
153
|
+
it is somewhat resistant to live-coding practices. In particular, `edit -c` to
|
|
154
|
+
edit the test then `try-again` doesn't work (so you'll have to `exit!`).
|
|
155
|
+
|
|
147
156
|
|
|
148
157
|
Peeking
|
|
149
158
|
=======
|
data/bin/kill-pry-rescue
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
def find_pry_rescuers extra_id = ''
|
|
4
|
+
pattern = 'pry-rescue @.*' + extra_id
|
|
5
|
+
pids = nil
|
|
6
|
+
IO.popen ['pgrep', '-f', pattern] do |io|
|
|
7
|
+
pids = io.readlines.map &:to_i
|
|
8
|
+
end
|
|
9
|
+
pids
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
if %w(-h --help').include? ARGV[0]
|
|
13
|
+
warn %{
|
|
14
|
+
#$0 - Stops a pry-rescuer
|
|
15
|
+
|
|
16
|
+
By default gets all of them, but if you provide an arg, it can filter by the
|
|
17
|
+
directory name.
|
|
18
|
+
|
|
19
|
+
Uses SIGINT by default, unless you supply the -9 option.
|
|
20
|
+
|
|
21
|
+
Currently running pry-rescue pids: #{find_pry_rescuers.join ' '}}
|
|
22
|
+
exit 1
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
signal =
|
|
26
|
+
if ARGV.delete '-9'
|
|
27
|
+
:KILL
|
|
28
|
+
else
|
|
29
|
+
:INT
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
pids = find_pry_rescuers(ARGV.join ' ')
|
|
33
|
+
warn '(No processes found.)' if pids.size.zero?
|
|
34
|
+
pids.each do |pid|
|
|
35
|
+
warn "Killing #{pid} with SIG#{signal}."
|
|
36
|
+
Process.kill signal, pid
|
|
37
|
+
end
|
data/lib/pry-rescue.rb
CHANGED
|
@@ -48,12 +48,14 @@ class PryRescue
|
|
|
48
48
|
exception, bindings = raised.last
|
|
49
49
|
bindings = without_duplicates(bindings)
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
51
|
+
with_program_name "#$PROGRAM_NAME [in pry-rescue @ #{Dir.pwd}]" do
|
|
52
|
+
if defined?(PryStackExplorer)
|
|
53
|
+
pry :call_stack => bindings,
|
|
54
|
+
:hooks => pry_hooks(exception, raised),
|
|
55
|
+
:initial_frame => initial_frame(bindings)
|
|
56
|
+
else
|
|
57
|
+
Pry.start bindings.first, :hooks => pry_hooks(exception, raised)
|
|
58
|
+
end
|
|
57
59
|
end
|
|
58
60
|
ensure
|
|
59
61
|
@exception_context_depth -= 1
|
|
@@ -164,5 +166,13 @@ class PryRescue
|
|
|
164
166
|
|
|
165
167
|
hooks
|
|
166
168
|
end
|
|
169
|
+
|
|
170
|
+
def with_program_name name
|
|
171
|
+
before = $PROGRAM_NAME
|
|
172
|
+
$PROGRAM_NAME = name
|
|
173
|
+
yield
|
|
174
|
+
ensure
|
|
175
|
+
$PROGRAM_NAME = before
|
|
176
|
+
end
|
|
167
177
|
end
|
|
168
178
|
end
|
data/pry-rescue.gemspec
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Gem::Specification.new do |s|
|
|
2
2
|
s.name = 'pry-rescue'
|
|
3
|
-
s.version = '0.
|
|
3
|
+
s.version = '0.14'
|
|
4
4
|
s.summary = 'Open a pry session on any unhandled exceptions'
|
|
5
5
|
s.description = 'Allows you to wrap code in Pry::rescue{ } to open a pry session at any unhandled exceptions'
|
|
6
6
|
s.homepage = 'https://github.com/ConradIrwin/pry-rescue'
|
|
@@ -8,7 +8,7 @@ Gem::Specification.new do |s|
|
|
|
8
8
|
s.authors = ['Conrad Irwin', 'banisterfiend', 'epitron']
|
|
9
9
|
s.files = `git ls-files`.split("\n")
|
|
10
10
|
s.require_paths = ['lib']
|
|
11
|
-
s.executables =
|
|
11
|
+
s.executables = s.files.grep(%r{^bin/}).map{|f| File.basename f}
|
|
12
12
|
|
|
13
13
|
s.add_dependency 'pry'
|
|
14
14
|
s.add_dependency 'interception', '>= 0.3'
|
metadata
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pry-rescue
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: '0.13'
|
|
5
4
|
prerelease:
|
|
5
|
+
version: '0.14'
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
8
8
|
- Conrad Irwin
|
|
@@ -11,17 +11,16 @@ authors:
|
|
|
11
11
|
autorequire:
|
|
12
12
|
bindir: bin
|
|
13
13
|
cert_chain: []
|
|
14
|
-
date:
|
|
14
|
+
date: 2013-01-05 00:00:00.000000000 Z
|
|
15
15
|
dependencies:
|
|
16
16
|
- !ruby/object:Gem::Dependency
|
|
17
|
-
|
|
17
|
+
type: :runtime
|
|
18
18
|
requirement: !ruby/object:Gem::Requirement
|
|
19
19
|
none: false
|
|
20
20
|
requirements:
|
|
21
21
|
- - ! '>='
|
|
22
22
|
- !ruby/object:Gem::Version
|
|
23
23
|
version: '0'
|
|
24
|
-
type: :runtime
|
|
25
24
|
prerelease: false
|
|
26
25
|
version_requirements: !ruby/object:Gem::Requirement
|
|
27
26
|
none: false
|
|
@@ -29,15 +28,15 @@ dependencies:
|
|
|
29
28
|
- - ! '>='
|
|
30
29
|
- !ruby/object:Gem::Version
|
|
31
30
|
version: '0'
|
|
31
|
+
name: pry
|
|
32
32
|
- !ruby/object:Gem::Dependency
|
|
33
|
-
|
|
33
|
+
type: :runtime
|
|
34
34
|
requirement: !ruby/object:Gem::Requirement
|
|
35
35
|
none: false
|
|
36
36
|
requirements:
|
|
37
37
|
- - ! '>='
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
39
|
version: '0.3'
|
|
40
|
-
type: :runtime
|
|
41
40
|
prerelease: false
|
|
42
41
|
version_requirements: !ruby/object:Gem::Requirement
|
|
43
42
|
none: false
|
|
@@ -45,15 +44,15 @@ dependencies:
|
|
|
45
44
|
- - ! '>='
|
|
46
45
|
- !ruby/object:Gem::Version
|
|
47
46
|
version: '0.3'
|
|
47
|
+
name: interception
|
|
48
48
|
- !ruby/object:Gem::Dependency
|
|
49
|
-
|
|
49
|
+
type: :development
|
|
50
50
|
requirement: !ruby/object:Gem::Requirement
|
|
51
51
|
none: false
|
|
52
52
|
requirements:
|
|
53
53
|
- - ! '>='
|
|
54
54
|
- !ruby/object:Gem::Version
|
|
55
55
|
version: '0'
|
|
56
|
-
type: :development
|
|
57
56
|
prerelease: false
|
|
58
57
|
version_requirements: !ruby/object:Gem::Requirement
|
|
59
58
|
none: false
|
|
@@ -61,15 +60,15 @@ dependencies:
|
|
|
61
60
|
- - ! '>='
|
|
62
61
|
- !ruby/object:Gem::Version
|
|
63
62
|
version: '0'
|
|
63
|
+
name: pry-stack_explorer
|
|
64
64
|
- !ruby/object:Gem::Dependency
|
|
65
|
-
|
|
65
|
+
type: :development
|
|
66
66
|
requirement: !ruby/object:Gem::Requirement
|
|
67
67
|
none: false
|
|
68
68
|
requirements:
|
|
69
69
|
- - ! '>='
|
|
70
70
|
- !ruby/object:Gem::Version
|
|
71
71
|
version: '0'
|
|
72
|
-
type: :development
|
|
73
72
|
prerelease: false
|
|
74
73
|
version_requirements: !ruby/object:Gem::Requirement
|
|
75
74
|
none: false
|
|
@@ -77,15 +76,15 @@ dependencies:
|
|
|
77
76
|
- - ! '>='
|
|
78
77
|
- !ruby/object:Gem::Version
|
|
79
78
|
version: '0'
|
|
79
|
+
name: rspec
|
|
80
80
|
- !ruby/object:Gem::Dependency
|
|
81
|
-
|
|
81
|
+
type: :development
|
|
82
82
|
requirement: !ruby/object:Gem::Requirement
|
|
83
83
|
none: false
|
|
84
84
|
requirements:
|
|
85
85
|
- - ! '>='
|
|
86
86
|
- !ruby/object:Gem::Version
|
|
87
87
|
version: '0'
|
|
88
|
-
type: :development
|
|
89
88
|
prerelease: false
|
|
90
89
|
version_requirements: !ruby/object:Gem::Requirement
|
|
91
90
|
none: false
|
|
@@ -93,15 +92,15 @@ dependencies:
|
|
|
93
92
|
- - ! '>='
|
|
94
93
|
- !ruby/object:Gem::Version
|
|
95
94
|
version: '0'
|
|
95
|
+
name: yard
|
|
96
96
|
- !ruby/object:Gem::Dependency
|
|
97
|
-
|
|
97
|
+
type: :development
|
|
98
98
|
requirement: !ruby/object:Gem::Requirement
|
|
99
99
|
none: false
|
|
100
100
|
requirements:
|
|
101
101
|
- - ! '>='
|
|
102
102
|
- !ruby/object:Gem::Version
|
|
103
103
|
version: '0'
|
|
104
|
-
type: :development
|
|
105
104
|
prerelease: false
|
|
106
105
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
106
|
none: false
|
|
@@ -109,6 +108,7 @@ dependencies:
|
|
|
109
108
|
- - ! '>='
|
|
110
109
|
- !ruby/object:Gem::Version
|
|
111
110
|
version: '0'
|
|
111
|
+
name: redcarpet
|
|
112
112
|
description: Allows you to wrap code in Pry::rescue{ } to open a pry session at any
|
|
113
113
|
unhandled exceptions
|
|
114
114
|
email:
|
|
@@ -116,6 +116,7 @@ email:
|
|
|
116
116
|
- jrmair@gmail.com
|
|
117
117
|
- chris@ill-logic.com
|
|
118
118
|
executables:
|
|
119
|
+
- kill-pry-rescue
|
|
119
120
|
- rescue
|
|
120
121
|
extensions: []
|
|
121
122
|
extra_rdoc_files: []
|
|
@@ -125,6 +126,7 @@ files:
|
|
|
125
126
|
- LICENSE.MIT
|
|
126
127
|
- README.md
|
|
127
128
|
- Rakefile
|
|
129
|
+
- bin/kill-pry-rescue
|
|
128
130
|
- bin/rescue
|
|
129
131
|
- examples/example.rb
|
|
130
132
|
- examples/example2.rb
|
|
@@ -184,3 +186,4 @@ signing_key:
|
|
|
184
186
|
specification_version: 3
|
|
185
187
|
summary: Open a pry session on any unhandled exceptions
|
|
186
188
|
test_files: []
|
|
189
|
+
has_rdoc:
|