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 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, please feel free to try these
127
- out, and leave bug reports if something is not working.
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
- ### rspec
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
- Just add the following to your `spec_helper.rb` or to the top of your test file.
134
+ Add the following to your `test_helper.rb` or to the top of your test file.
132
135
 
133
136
  ```ruby
134
- require 'pry-rescue/rspec'
137
+ require 'minitest/autorun'
138
+ require 'pry-rescue/minitest'
135
139
  ```
136
140
 
137
- ### minitest
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
- Just after you `require "minitest/autorun"` also require `pry-rescue/minitest`.
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 'minitest/autorun'
143
- require 'pry-rescue/minitest'
149
+ require 'pry-rescue/rspec'
144
150
  ```
145
151
 
146
- <a name="peeking"/>
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
  =======
@@ -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
- if defined?(PryStackExplorer)
52
- pry :call_stack => bindings,
53
- :hooks => pry_hooks(exception, raised),
54
- :initial_frame => initial_frame(bindings)
55
- else
56
- Pry.start bindings.first, :hooks => pry_hooks(exception, raised)
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.13'
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 = ['rescue']
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: 2012-11-13 00:00:00.000000000 Z
14
+ date: 2013-01-05 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
- name: pry
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
- name: interception
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
- name: pry-stack_explorer
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
- name: rspec
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
- name: yard
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
- name: redcarpet
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: