pry-rescue 0.13 → 0.14

Sign up to get free protection for your applications and to get access to all the features.
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: