pry-rescue 0.9.1.martin → 0.9.1

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
@@ -11,6 +11,19 @@ instead of `ruby`:
11
11
  rescue <script.rb> [arguments..]
12
12
  ```
13
13
 
14
+ If you're using Rails, you should add `pry-rescue` to the development section of your
15
+ Gemspec and then run rails server using rescue:
16
+
17
+ ```
18
+ rescue rails server
19
+ ```
20
+
21
+ If you're using `bundle exec` the rescue should go after the exec:
22
+
23
+ ```
24
+ bundle exec rescue rails server
25
+ ```
26
+
14
27
  If you're using Rack, you should use the middleware instead (though be careful to only
15
28
  include it in development!)
16
29
  ```
@@ -49,6 +62,19 @@ from examples/example.rb:7:in `rescue in test'
49
62
  [1] pry(main)>
50
63
  ```
51
64
 
65
+ Finally. If you're doing your own exception handling, you can ask pry to open on an exception that you've caught.
66
+ For this to work you must be inside a Pry::rescue{ } block.
67
+
68
+ ```ruby
69
+ def test
70
+ raise "foo"
71
+ rescue => e
72
+ Pry::rescued(e)
73
+ end
74
+
75
+ Pry::rescue{ test }
76
+ ```
77
+
52
78
  cd-cause
53
79
  ========
54
80
 
@@ -93,51 +119,24 @@ From: examples/example.rb @ line 4 Object#test:
93
119
  foo
94
120
  ```
95
121
 
96
- Pry::rescued
97
- ============
98
-
99
- If your exception handling needs are truly complicated then you can pass explicitly
100
- rescued exceptions into Pry::rescue:
101
-
102
- ```ruby
103
- def test
104
- raise "foo"
105
- end
106
-
107
- def safely_test
108
- test
109
- rescue => e
110
- Pry::rescued e
111
- end
112
-
113
- Pry::rescue do
114
- safely_test
115
- end
116
- ```
117
-
118
- This lets you open a Pry session as part of your normal exception handling. N.B.
119
- `Pry::rescued` must always be called from somewhere within a `Pry::rescue`, and the
120
- exception object you pass to it must have actually been raised!
121
-
122
122
  pry-stack explorer
123
123
  ==================
124
124
 
125
125
  If you're running rubinius, or ruby-1.9, then you can use `pry-rescue` alongside
126
- `pry-stack_explorer`. This gives you the ability to move `up` or `down` the stack so that
126
+ `pry-stack\_explorer`. This gives you the ability to move `up` or `down` the stack so that
127
127
  you can get a better idea of why your function ended up in a bad state. Run
128
128
  [example2.rb](https://github.com/ConradIrwin/pry-rescue/blob/master/examples/example2.rb) to get a feel for what this is like.
129
129
 
130
- Compatibility
131
- =============
132
-
133
- * mri 2.0
134
- * mri 1.9.3
135
- * mri 1.9.2
136
- * mri 1.8.7 — occasionally the value for `self` will be incorrect.
137
- * ree 1.8.7 occasionally the value for `self` will be incorrect.
138
- * jruby-head (--1.8, --1.9)
139
- * jruby 1.6 (--1.8, --1.9) the value for `self` is incorrect in `NoMethodError`s.
140
- * rubinius (-Xversion=18, -Xversion=19) — some low-level exceptions are missed (e.g. ZeroDivisionError when doing `1 / 0`)
130
+ Known bugs
131
+ ==========
132
+
133
+ * ruby 2.0, 1.9.3, 1.9.2 – no known bugs
134
+ * ruby 1.9.1 — not supported
135
+ * ruby 1.8.7 — occasional incorrect values for self
136
+ * ree 1.8.7 — no known bugs
137
+ * jruby 1.7 (1.8 mode and 1.9 mode) no known bugs
138
+ * jruby 1.6 (1.8 mode and 1.9 mode) — incorrect value for self in NoMethodErrors
139
+ * rbx (1.8 mode and 1.9 mode) does not catch some low-level errors (e.g. ZeroDivisionError)
141
140
 
142
141
  Meta-fu
143
142
  =======
data/bin/rescue CHANGED
@@ -17,6 +17,11 @@ What it does:
17
17
 
18
18
  }
19
19
 
20
+ if ARGV[0] == 'rails'
21
+ ENV['PRY_RESCUE_RAILS'] = 'true'
22
+ exec(*ARGV)
23
+ end
24
+
20
25
  if script = ARGV.shift
21
26
  $0 = File.expand_path(script)
22
27
  if File.exists? script
@@ -15,7 +15,7 @@ class << Pry
15
15
  begin
16
16
  return with_rescuing(&block)
17
17
  rescue Exception => e
18
- rescued e
18
+ rescued e unless SystemExit === e || SignalException === e
19
19
  raise e
20
20
  end
21
21
  end
@@ -0,0 +1,14 @@
1
+ require 'pry-rescue'
2
+ class PryRescue
3
+ # A railtie that inserts PryRescue::Rack at the correct point in the
4
+ # middleware chain.
5
+ #
6
+ # Just adding 'use PryRescue::Rack' inside your rails app will add
7
+ # the middleware above the rails exception handling middleware,
8
+ # and so it will not work.
9
+ class Railtie < ::Rails::Railtie
10
+ initializer "pry_rescue" do |app|
11
+ app.config.middleware.use PryRescue::Rack
12
+ end
13
+ end
14
+ end
data/lib/pry-rescue.rb CHANGED
@@ -6,6 +6,10 @@ require File.expand_path('../pry-rescue/core_ext', __FILE__)
6
6
  require File.expand_path('../pry-rescue/commands', __FILE__)
7
7
  require File.expand_path('../pry-rescue/rack', __FILE__)
8
8
 
9
+ if ENV['PRY_RESCUE_RAILS']
10
+ require File.expand_path('../pry-rescue/rails', __FILE__)
11
+ end
12
+
9
13
  begin
10
14
  require 'pry-stack_explorer'
11
15
  rescue LoadError
@@ -89,7 +93,9 @@ class PryRescue
89
93
  # @param [String] file the absolute path
90
94
  # @return [Boolean]
91
95
  def user_path?(file)
92
- !file.start_with?(RbConfig::CONFIG['libdir'])
96
+ !file.start_with?(RbConfig::CONFIG['libdir']) &&
97
+ !Gem::Specification.any?{ |gem| file.start_with?(gem.full_gem_path) } &&
98
+ !(file == '<internal:prelude>')
93
99
  end
94
100
 
95
101
  # Remove bindings that are part of Interception/Pry.rescue's internal
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.9.1.martin'
3
+ s.version = '0.9.1'
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'
@@ -73,6 +73,25 @@ describe 'Pry.rescue' do
73
73
  end
74
74
  end.should raise_error /first_occurance/
75
75
  end
76
+
77
+ it "should not catch SystemExit" do
78
+ PryRescue.should_not_receive(:enter_exception_context)
79
+
80
+ lambda do
81
+ Pry::rescue do
82
+ exit
83
+ end
84
+ end.should raise_error SystemExit
85
+ end
86
+
87
+ it 'should not catch Ctrl+C' do
88
+ PryRescue.should_not_receive(:enter_exception_context)
89
+ lambda do
90
+ Pry::rescue do
91
+ raise Interrupt, "ctrl+c (fake)"
92
+ end
93
+ end.should raise_error Interrupt
94
+ end
76
95
  end
77
96
 
78
97
  describe "Pry.rescued" do
metadata CHANGED
@@ -1,109 +1,97 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: pry-rescue
3
- version: !ruby/object:Gem::Version
4
- version: 0.9.1.martin
5
- prerelease: 6
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 9
8
+ - 1
9
+ version: 0.9.1
6
10
  platform: ruby
7
- authors:
11
+ authors:
8
12
  - Conrad Irwin
9
13
  - banisterfiend
10
14
  - epitron
11
15
  autorequire:
12
16
  bindir: bin
13
17
  cert_chain: []
14
- date: 2012-10-03 00:00:00.000000000 Z
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
18
+
19
+ date: 2012-09-30 00:00:00 -07:00
20
+ default_executable:
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
17
23
  name: pry
18
- requirement: !ruby/object:Gem::Requirement
19
- none: false
20
- requirements:
21
- - - ! '>='
22
- - !ruby/object:Gem::Version
23
- version: '0'
24
- type: :runtime
25
24
  prerelease: false
26
- version_requirements: !ruby/object:Gem::Requirement
27
- none: false
28
- requirements:
29
- - - ! '>='
30
- - !ruby/object:Gem::Version
31
- version: '0'
32
- - !ruby/object:Gem::Dependency
33
- name: interception
34
- requirement: !ruby/object:Gem::Requirement
35
- none: false
36
- requirements:
37
- - - ! '>='
38
- - !ruby/object:Gem::Version
39
- version: '0.3'
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ segments:
30
+ - 0
31
+ version: "0"
40
32
  type: :runtime
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
35
+ name: interception
41
36
  prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- none: false
44
- requirements:
45
- - - ! '>='
46
- - !ruby/object:Gem::Version
47
- version: '0.3'
48
- - !ruby/object:Gem::Dependency
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ - 3
44
+ version: "0.3"
45
+ type: :runtime
46
+ version_requirements: *id002
47
+ - !ruby/object:Gem::Dependency
49
48
  name: rspec
50
- requirement: !ruby/object:Gem::Requirement
51
- none: false
52
- requirements:
53
- - - ! '>='
54
- - !ruby/object:Gem::Version
55
- version: '0'
56
- type: :development
57
49
  prerelease: false
58
- version_requirements: !ruby/object:Gem::Requirement
59
- none: false
60
- requirements:
61
- - - ! '>='
62
- - !ruby/object:Gem::Version
63
- version: '0'
64
- - !ruby/object:Gem::Dependency
65
- name: yard
66
- requirement: !ruby/object:Gem::Requirement
67
- none: false
68
- requirements:
69
- - - ! '>='
70
- - !ruby/object:Gem::Version
71
- version: '0'
50
+ requirement: &id003 !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ segments:
55
+ - 0
56
+ version: "0"
72
57
  type: :development
58
+ version_requirements: *id003
59
+ - !ruby/object:Gem::Dependency
60
+ name: yard
73
61
  prerelease: false
74
- version_requirements: !ruby/object:Gem::Requirement
75
- none: false
76
- requirements:
77
- - - ! '>='
78
- - !ruby/object:Gem::Version
79
- version: '0'
80
- - !ruby/object:Gem::Dependency
81
- name: redcarpet
82
- requirement: !ruby/object:Gem::Requirement
83
- none: false
84
- requirements:
85
- - - ! '>='
86
- - !ruby/object:Gem::Version
87
- version: '0'
62
+ requirement: &id004 !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ segments:
67
+ - 0
68
+ version: "0"
88
69
  type: :development
70
+ version_requirements: *id004
71
+ - !ruby/object:Gem::Dependency
72
+ name: redcarpet
89
73
  prerelease: false
90
- version_requirements: !ruby/object:Gem::Requirement
91
- none: false
92
- requirements:
93
- - - ! '>='
94
- - !ruby/object:Gem::Version
95
- version: '0'
96
- description: Allows you to wrap code in Pry::rescue{ } to open a pry session at any
97
- unhandled exceptions
98
- email:
74
+ requirement: &id005 !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ segments:
79
+ - 0
80
+ version: "0"
81
+ type: :development
82
+ version_requirements: *id005
83
+ description: Allows you to wrap code in Pry::rescue{ } to open a pry session at any unhandled exceptions
84
+ email:
99
85
  - conrad.irwin@gmail.com
100
86
  - jrmair@gmail.com
101
87
  - chris@ill-logic.com
102
- executables:
88
+ executables:
103
89
  - rescue
104
90
  extensions: []
91
+
105
92
  extra_rdoc_files: []
106
- files:
93
+
94
+ files:
107
95
  - .gitignore
108
96
  - Gemfile
109
97
  - LICENSE.MIT
@@ -118,6 +106,7 @@ files:
118
106
  - lib/pry-rescue/commands.rb
119
107
  - lib/pry-rescue/core_ext.rb
120
108
  - lib/pry-rescue/rack.rb
109
+ - lib/pry-rescue/rails.rb
121
110
  - lib/pry/rescue.rb
122
111
  - pry-rescue.gemspec
123
112
  - spec/commands_spec.rb
@@ -130,28 +119,35 @@ files:
130
119
  - spec/fixtures/super.rb
131
120
  - spec/fixtures/uri.rb
132
121
  - spec/pry_rescue_spec.rb
122
+ has_rdoc: true
133
123
  homepage: https://github.com/ConradIrwin/pry-rescue
134
124
  licenses: []
125
+
135
126
  post_install_message:
136
127
  rdoc_options: []
137
- require_paths:
128
+
129
+ require_paths:
138
130
  - lib
139
- required_ruby_version: !ruby/object:Gem::Requirement
140
- none: false
141
- requirements:
142
- - - ! '>='
143
- - !ruby/object:Gem::Version
144
- version: '0'
145
- required_rubygems_version: !ruby/object:Gem::Requirement
146
- none: false
147
- requirements:
148
- - - ! '>'
149
- - !ruby/object:Gem::Version
150
- version: 1.3.1
131
+ required_ruby_version: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - ">="
134
+ - !ruby/object:Gem::Version
135
+ segments:
136
+ - 0
137
+ version: "0"
138
+ required_rubygems_version: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ segments:
143
+ - 0
144
+ version: "0"
151
145
  requirements: []
146
+
152
147
  rubyforge_project:
153
- rubygems_version: 1.8.23
148
+ rubygems_version: 1.3.6
154
149
  signing_key:
155
150
  specification_version: 3
156
151
  summary: Open a pry session on any unhandled exceptions
157
152
  test_files: []
153
+