pry-byebug 3.5.0 → 3.9.0
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.
- checksums.yaml +5 -5
- data/CHANGELOG.md +41 -0
- data/LICENSE +2 -2
- data/README.md +31 -15
- data/lib/byebug/processors/pry_processor.rb +8 -6
- data/lib/pry/byebug/breakpoints.rb +6 -3
- data/lib/pry-byebug/base.rb +13 -9
- data/lib/pry-byebug/cli.rb +6 -4
- data/lib/pry-byebug/commands/backtrace.rb +6 -4
- data/lib/pry-byebug/commands/breakpoint.rb +23 -19
- data/lib/pry-byebug/commands/continue.rb +9 -5
- data/lib/pry-byebug/commands/down.rb +6 -4
- data/lib/pry-byebug/commands/exit_all.rb +4 -0
- data/lib/pry-byebug/commands/finish.rb +6 -4
- data/lib/pry-byebug/commands/frame.rb +7 -5
- data/lib/pry-byebug/commands/next.rb +7 -5
- data/lib/pry-byebug/commands/step.rb +7 -5
- data/lib/pry-byebug/commands/up.rb +6 -4
- data/lib/pry-byebug/commands.rb +12 -10
- data/lib/pry-byebug/control_d_handler.rb +4 -2
- data/lib/pry-byebug/helpers/breakpoints.rb +23 -25
- data/lib/pry-byebug/helpers/location.rb +24 -0
- data/lib/pry-byebug/helpers/multiline.rb +2 -0
- data/lib/pry-byebug/helpers/navigation.rb +4 -2
- data/lib/pry-byebug/pry_ext.rb +4 -2
- data/lib/pry-byebug/pry_remote_ext.rb +5 -3
- data/lib/pry-byebug/version.rb +3 -1
- data/lib/pry-byebug.rb +4 -2
- metadata +11 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 5a9be5ab97e10c1247774626e9dee655956d904dfcbdb0e601af7eabcee668a4
|
|
4
|
+
data.tar.gz: a151143361a89b102f85102c95c7b86a4743413822e69fefcf67087a93cd29cf
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 75a234974314f675ba12d4c435897541c40e63b67807f03239665c31f6ecef9b06a3456ba9d577b9d255e0b59efd55b9486280884c788519a63e783920226a7d
|
|
7
|
+
data.tar.gz: bc5e1fcc9a82f7ed703d9b9e6272e8f8026300398e4f9265f3e72e9d84d066fa861492ee2e7a6a35c91345444160bdf39bab957c6b638d9b33ab735059b722c9
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,47 @@
|
|
|
2
2
|
|
|
3
3
|
## Master (Unreleased)
|
|
4
4
|
|
|
5
|
+
## 3.9.0 (2020-03-21)
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
* Dependency on pry being too loose. Now breaking minor releases of pry won't affect pry-byebug users (#289).
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
13
|
+
* Support for pry 0.13.0 (#266).
|
|
14
|
+
|
|
15
|
+
### Removed
|
|
16
|
+
|
|
17
|
+
* Support for pry older than 0.13.0 (#289).
|
|
18
|
+
|
|
19
|
+
## 3.8.0 (2020-01-22)
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
|
|
23
|
+
* Use `Binding#source_location` instead of evaluating `__FILE__` to avoid
|
|
24
|
+
warnings on Ruby 2.7 and on Ruby 2.6 in verbose mode (#221).
|
|
25
|
+
|
|
26
|
+
### Removed
|
|
27
|
+
|
|
28
|
+
* Support for Ruby 2.3. Pry-byebug no longer installs on this platform.
|
|
29
|
+
|
|
30
|
+
## 3.7.0 (2019-02-21)
|
|
31
|
+
|
|
32
|
+
* Byebug 11 compatibility, with ruby 2.6 support.
|
|
33
|
+
|
|
34
|
+
## 3.6.0 (2018-02-07)
|
|
35
|
+
|
|
36
|
+
### Added
|
|
37
|
+
|
|
38
|
+
* Byebug 10 compatibility, with ruby 2.5 support.
|
|
39
|
+
|
|
40
|
+
## 3.5.1 (2017-11-27)
|
|
41
|
+
|
|
42
|
+
### Fixed
|
|
43
|
+
|
|
44
|
+
* Allow other threads like Pry (#142).
|
|
45
|
+
|
|
5
46
|
## 3.5.0 (2017-08-23)
|
|
6
47
|
|
|
7
48
|
### Added
|
data/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
MIT
|
|
1
|
+
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c) David Rodríguez <deivid.rodriguez@
|
|
3
|
+
Copyright (c) 2018 David Rodríguez <deivid.rodriguez@riseup.net>
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
6
6
|
this software and associated documentation files (the "Software"), to deal in
|
data/README.md
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
# pry-byebug
|
|
2
2
|
|
|
3
3
|
[![Version][VersionBadge]][VersionURL]
|
|
4
|
-
[![Build][
|
|
4
|
+
[![Build][CIBadge]][CIURL]
|
|
5
5
|
[![Inline docs][InchCIBadge]][InchCIURL]
|
|
6
|
-
[![Gratipay][GratipayBadge]][GratipayURL]
|
|
7
6
|
[![Coverage][CoverageBadge]][CoverageURL]
|
|
8
7
|
|
|
9
8
|
Adds step-by-step debugging and stack navigation capabilities to [pry] using
|
|
@@ -24,12 +23,7 @@ puts 'Goodbye World' # Run 'next' in the console to move here.
|
|
|
24
23
|
|
|
25
24
|
## Requirements
|
|
26
25
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
* Recommended:
|
|
30
|
-
* MRI 2.1.8 or higher.
|
|
31
|
-
* MRI 2.2.4 or higher.
|
|
32
|
-
* MRI 2.3.0 or higher.
|
|
26
|
+
MRI 2.4.0 or higher.
|
|
33
27
|
|
|
34
28
|
## Installation
|
|
35
29
|
|
|
@@ -41,7 +35,9 @@ gem 'pry-byebug'
|
|
|
41
35
|
|
|
42
36
|
to your Gemfile and run
|
|
43
37
|
|
|
44
|
-
|
|
38
|
+
```console
|
|
39
|
+
bundle install
|
|
40
|
+
```
|
|
45
41
|
|
|
46
42
|
Make sure you include the gem globally or inside the `:test` group if you plan
|
|
47
43
|
to use it to debug your tests!
|
|
@@ -149,6 +145,28 @@ mentioned here if they are present in your Gemfile.
|
|
|
149
145
|
|
|
150
146
|
* [pry-nav]: Provides step-by-step debugging for JRuby.
|
|
151
147
|
|
|
148
|
+
## Contribute
|
|
149
|
+
|
|
150
|
+
See [Getting Started with Development](CONTRIBUTING.md).
|
|
151
|
+
|
|
152
|
+
## Funding
|
|
153
|
+
|
|
154
|
+
Subscribe to [Tidelift] to ensure pry-byebug stays actively maintained, and at
|
|
155
|
+
the same time get licensing assurances and timely security notifications for
|
|
156
|
+
your open source dependencies.
|
|
157
|
+
|
|
158
|
+
You can also help `pry-byebug` by leaving a small (or big) tip through [Liberapay].
|
|
159
|
+
|
|
160
|
+
[Tidelift]: https://tidelift.com/subscription/pkg/rubygems-pry-byebug?utm_source=rubygems-pry-byebug&utm_medium=referral&utm_campaign=readme
|
|
161
|
+
[Liberapay]: https://liberapay.com/pry-byebug/donate
|
|
162
|
+
|
|
163
|
+
## Security contact information
|
|
164
|
+
|
|
165
|
+
Please use the Tidelift security contact to [report a security vulnerability].
|
|
166
|
+
Tidelift will coordinate the fix and disclosure.
|
|
167
|
+
|
|
168
|
+
[report a security vulnerability]: https://tidelift.com/security
|
|
169
|
+
|
|
152
170
|
## Credits
|
|
153
171
|
|
|
154
172
|
* Gopal Patel (@nixme), creator of [pry-debugger], and everybody who contributed
|
|
@@ -166,11 +184,9 @@ Patches and bug reports are welcome.
|
|
|
166
184
|
|
|
167
185
|
[VersionBadge]: https://badge.fury.io/rb/pry-byebug.svg
|
|
168
186
|
[VersionURL]: http://badge.fury.io/rb/pry-byebug
|
|
169
|
-
[
|
|
170
|
-
[
|
|
187
|
+
[CIBadge]: https://github.com/deivid-rodriguez/pry-byebug/workflows/ubuntu/badge.svg?branch=master
|
|
188
|
+
[CIURL]: https://github.com/deivid-rodriguez/pry-byebug/actions?query=workflow%3Aubuntu
|
|
171
189
|
[InchCIBadge]: http://inch-ci.org/github/deivid-rodriguez/pry-byebug.svg?branch=master
|
|
172
190
|
[InchCIURL]: http://inch-ci.org/github/deivid-rodriguez/pry-byebug
|
|
173
|
-
[
|
|
174
|
-
[
|
|
175
|
-
[CoverageBadge]: https://img.shields.io/codeclimate/coverage/github/deivid-rodriguez/pry-byebug.svg
|
|
176
|
-
[CoverageURL]: https://codeclimate.com/github/deivid-rodriguez/pry-byebug
|
|
191
|
+
[CoverageBadge]: https://api.codeclimate.com/v1/badges/a88e27809329c03af017/test_coverage
|
|
192
|
+
[CoverageURL]: https://codeclimate.com/github/deivid-rodriguez/pry-byebug/test_coverage
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "byebug/core"
|
|
2
4
|
|
|
3
5
|
module Byebug
|
|
4
6
|
#
|
|
@@ -25,7 +27,7 @@ module Byebug
|
|
|
25
27
|
return_value = nil
|
|
26
28
|
|
|
27
29
|
command = catch(:breakout_nav) do # Throws from PryByebug::Commands
|
|
28
|
-
return_value = yield
|
|
30
|
+
return_value = allowing_other_threads { yield }
|
|
29
31
|
{} # Nothing thrown == no navigational command
|
|
30
32
|
end
|
|
31
33
|
|
|
@@ -91,7 +93,7 @@ module Byebug
|
|
|
91
93
|
expr = breakpoint.expr
|
|
92
94
|
return unless expr
|
|
93
95
|
|
|
94
|
-
output.puts bold(
|
|
96
|
+
output.puts bold("Condition: ") + expr
|
|
95
97
|
end
|
|
96
98
|
|
|
97
99
|
private
|
|
@@ -99,7 +101,7 @@ module Byebug
|
|
|
99
101
|
def n_hits(breakpoint)
|
|
100
102
|
n_hits = breakpoint.hit_count
|
|
101
103
|
|
|
102
|
-
n_hits == 1 ?
|
|
104
|
+
n_hits == 1 ? "First hit" : "Hit #{n_hits} times."
|
|
103
105
|
end
|
|
104
106
|
|
|
105
107
|
#
|
|
@@ -118,7 +120,7 @@ module Byebug
|
|
|
118
120
|
end
|
|
119
121
|
|
|
120
122
|
def perform_backtrace(_options)
|
|
121
|
-
Byebug::WhereCommand.new(self,
|
|
123
|
+
Byebug::WhereCommand.new(self, "backtrace").execute
|
|
122
124
|
|
|
123
125
|
resume_pry
|
|
124
126
|
end
|
|
@@ -154,7 +156,7 @@ module Byebug
|
|
|
154
156
|
end
|
|
155
157
|
|
|
156
158
|
def perform_frame(options)
|
|
157
|
-
index = options[:index] ? options[:index].to_i :
|
|
159
|
+
index = options[:index] ? options[:index].to_i : ""
|
|
158
160
|
|
|
159
161
|
Byebug::FrameCommand.new(self, "frame #{index}").execute
|
|
160
162
|
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
class Pry
|
|
2
4
|
module Byebug
|
|
3
5
|
#
|
|
@@ -60,7 +62,8 @@ class Pry
|
|
|
60
62
|
#
|
|
61
63
|
def add_file(file, line, expression = nil)
|
|
62
64
|
real_file = (file != Pry.eval_path)
|
|
63
|
-
raise(ArgumentError,
|
|
65
|
+
raise(ArgumentError, "Invalid file!") if real_file && !File.exist?(file)
|
|
66
|
+
|
|
64
67
|
validate_expression expression
|
|
65
68
|
|
|
66
69
|
path = (real_file ? File.expand_path(file) : file)
|
|
@@ -85,7 +88,6 @@ class Pry
|
|
|
85
88
|
#
|
|
86
89
|
def delete(id)
|
|
87
90
|
deleted =
|
|
88
|
-
::Byebug.started? &&
|
|
89
91
|
::Byebug::Breakpoint.remove(id) &&
|
|
90
92
|
breakpoints.delete(find_by_id(id))
|
|
91
93
|
|
|
@@ -97,7 +99,7 @@ class Pry
|
|
|
97
99
|
#
|
|
98
100
|
def delete_all
|
|
99
101
|
@breakpoints = []
|
|
100
|
-
::Byebug.breakpoints.clear
|
|
102
|
+
::Byebug.breakpoints.clear
|
|
101
103
|
end
|
|
102
104
|
|
|
103
105
|
#
|
|
@@ -142,6 +144,7 @@ class Pry
|
|
|
142
144
|
def find_by_id(id)
|
|
143
145
|
breakpoint = find { |b| b.id == id }
|
|
144
146
|
raise(ArgumentError, "No breakpoint ##{id}!") unless breakpoint
|
|
147
|
+
|
|
145
148
|
breakpoint
|
|
146
149
|
end
|
|
147
150
|
|
data/lib/pry-byebug/base.rb
CHANGED
|
@@ -1,25 +1,29 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "pry-byebug/helpers/location"
|
|
4
|
+
|
|
1
5
|
#
|
|
2
6
|
# Main container module for Pry-Byebug functionality
|
|
3
7
|
#
|
|
4
8
|
module PryByebug
|
|
9
|
+
# Reference to currently running pry-remote server. Used by the processor.
|
|
10
|
+
attr_accessor :current_remote_server
|
|
11
|
+
|
|
12
|
+
module_function
|
|
13
|
+
|
|
5
14
|
#
|
|
6
15
|
# Checks that a target binding is in a local file context.
|
|
7
16
|
#
|
|
8
17
|
def file_context?(target)
|
|
9
|
-
file =
|
|
18
|
+
file = Helpers::Location.current_file(target)
|
|
10
19
|
file == Pry.eval_path || !Pry::Helpers::BaseHelpers.not_a_real_file?(file)
|
|
11
20
|
end
|
|
12
|
-
module_function :file_context?
|
|
13
21
|
|
|
14
22
|
#
|
|
15
23
|
# Ensures that a command is executed in a local file context.
|
|
16
24
|
#
|
|
17
|
-
def check_file_context(target,
|
|
18
|
-
|
|
19
|
-
raise(Pry::CommandError,
|
|
25
|
+
def check_file_context(target, msg = nil)
|
|
26
|
+
msg ||= "Cannot find local context. Did you use `binding.pry`?"
|
|
27
|
+
raise(Pry::CommandError, msg) unless file_context?(target)
|
|
20
28
|
end
|
|
21
|
-
module_function :check_file_context
|
|
22
|
-
|
|
23
|
-
# Reference to currently running pry-remote server. Used by the processor.
|
|
24
|
-
attr_accessor :current_remote_server
|
|
25
29
|
end
|
data/lib/pry-byebug/cli.rb
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
require
|
|
4
|
-
require
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "pry-byebug/base"
|
|
4
|
+
require "pry-byebug/pry_ext"
|
|
5
|
+
require "pry-byebug/commands"
|
|
6
|
+
require "pry-byebug/control_d_handler"
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "pry-byebug/helpers/navigation"
|
|
2
4
|
|
|
3
5
|
module PryByebug
|
|
4
6
|
#
|
|
@@ -7,10 +9,10 @@ module PryByebug
|
|
|
7
9
|
class BacktraceCommand < Pry::ClassCommand
|
|
8
10
|
include Helpers::Navigation
|
|
9
11
|
|
|
10
|
-
match
|
|
11
|
-
group
|
|
12
|
+
match "backtrace"
|
|
13
|
+
group "Byebug"
|
|
12
14
|
|
|
13
|
-
description
|
|
15
|
+
description "Display the current stack."
|
|
14
16
|
|
|
15
17
|
banner <<-BANNER
|
|
16
18
|
Usage: backtrace
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
require
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "pry/byebug/breakpoints"
|
|
4
|
+
require "pry-byebug/helpers/breakpoints"
|
|
5
|
+
require "pry-byebug/helpers/location"
|
|
6
|
+
require "pry-byebug/helpers/multiline"
|
|
4
7
|
|
|
5
8
|
module PryByebug
|
|
6
9
|
#
|
|
@@ -8,11 +11,12 @@ module PryByebug
|
|
|
8
11
|
#
|
|
9
12
|
class BreakCommand < Pry::ClassCommand
|
|
10
13
|
include Helpers::Breakpoints
|
|
14
|
+
include Helpers::Location
|
|
11
15
|
include Helpers::Multiline
|
|
12
16
|
|
|
13
|
-
match
|
|
14
|
-
group
|
|
15
|
-
description
|
|
17
|
+
match "break"
|
|
18
|
+
group "Byebug"
|
|
19
|
+
description "Set or edit a breakpoint."
|
|
16
20
|
|
|
17
21
|
banner <<-BANNER
|
|
18
22
|
Usage: break <METHOD | FILE:LINE | LINE> [if CONDITION]
|
|
@@ -46,13 +50,13 @@ module PryByebug
|
|
|
46
50
|
def options(opt)
|
|
47
51
|
defaults = { argument: true, as: Integer }
|
|
48
52
|
|
|
49
|
-
opt.on :c, :condition,
|
|
50
|
-
opt.on :s, :show,
|
|
51
|
-
opt.on :D, :delete,
|
|
52
|
-
opt.on :d, :disable,
|
|
53
|
-
opt.on :e, :enable,
|
|
54
|
-
opt.on :'disable-all',
|
|
55
|
-
opt.on :'delete-all',
|
|
53
|
+
opt.on :c, :condition, "Change condition of a breakpoint.", defaults
|
|
54
|
+
opt.on :s, :show, "Show breakpoint details and source.", defaults
|
|
55
|
+
opt.on :D, :delete, "Delete a breakpoint.", defaults
|
|
56
|
+
opt.on :d, :disable, "Disable a breakpoint.", defaults
|
|
57
|
+
opt.on :e, :enable, "Enable a disabled breakpoint.", defaults
|
|
58
|
+
opt.on :'disable-all', "Disable all breakpoints."
|
|
59
|
+
opt.on :'delete-all', "Delete all breakpoints."
|
|
56
60
|
end
|
|
57
61
|
|
|
58
62
|
def process
|
|
@@ -82,13 +86,13 @@ module PryByebug
|
|
|
82
86
|
end
|
|
83
87
|
|
|
84
88
|
def process_condition
|
|
85
|
-
expr = args.empty? ? nil : args.join(
|
|
89
|
+
expr = args.empty? ? nil : args.join(" ")
|
|
86
90
|
breakpoints.change(opts[:condition], expr)
|
|
87
91
|
end
|
|
88
92
|
|
|
89
93
|
def new_breakpoint
|
|
90
94
|
place = args.shift
|
|
91
|
-
condition = args.join(
|
|
95
|
+
condition = args.join(" ") if args.shift == "if"
|
|
92
96
|
|
|
93
97
|
bp = add_breakpoint(place, condition)
|
|
94
98
|
|
|
@@ -107,7 +111,7 @@ module PryByebug
|
|
|
107
111
|
def add_breakpoint(place, condition)
|
|
108
112
|
case place
|
|
109
113
|
when /^(\d+)$/
|
|
110
|
-
errmsg =
|
|
114
|
+
errmsg = "Line number declaration valid only in a file context."
|
|
111
115
|
PryByebug.check_file_context(target, errmsg)
|
|
112
116
|
|
|
113
117
|
lineno = Regexp.last_match[1].to_i
|
|
@@ -118,13 +122,13 @@ module PryByebug
|
|
|
118
122
|
breakpoints.add_file(file, lineno, condition)
|
|
119
123
|
when /^(.*)[.#].+$/ # Method or class name
|
|
120
124
|
if Regexp.last_match[1].strip.empty?
|
|
121
|
-
errmsg =
|
|
125
|
+
errmsg = "Method name declaration valid only in a file context."
|
|
122
126
|
PryByebug.check_file_context(target, errmsg)
|
|
123
|
-
place = target.eval(
|
|
127
|
+
place = target.eval("self.class.to_s") + place
|
|
124
128
|
end
|
|
125
129
|
breakpoints.add_method(place, condition)
|
|
126
130
|
else
|
|
127
|
-
raise(ArgumentError,
|
|
131
|
+
raise(ArgumentError, "Cannot identify arguments as breakpoint")
|
|
128
132
|
end
|
|
129
133
|
end
|
|
130
134
|
end
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "pry-byebug/helpers/navigation"
|
|
4
|
+
require "pry-byebug/helpers/breakpoints"
|
|
5
|
+
require "pry-byebug/helpers/location"
|
|
3
6
|
|
|
4
7
|
module PryByebug
|
|
5
8
|
#
|
|
@@ -8,10 +11,11 @@ module PryByebug
|
|
|
8
11
|
class ContinueCommand < Pry::ClassCommand
|
|
9
12
|
include Helpers::Navigation
|
|
10
13
|
include Helpers::Breakpoints
|
|
14
|
+
include Helpers::Location
|
|
11
15
|
|
|
12
|
-
match
|
|
13
|
-
group
|
|
14
|
-
description
|
|
16
|
+
match "continue"
|
|
17
|
+
group "Byebug"
|
|
18
|
+
description "Continue program execution and end the Pry session."
|
|
15
19
|
|
|
16
20
|
banner <<-BANNER
|
|
17
21
|
Usage: continue [LINE]
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "pry-byebug/helpers/navigation"
|
|
2
4
|
|
|
3
5
|
module PryByebug
|
|
4
6
|
#
|
|
@@ -7,10 +9,10 @@ module PryByebug
|
|
|
7
9
|
class DownCommand < Pry::ClassCommand
|
|
8
10
|
include Helpers::Navigation
|
|
9
11
|
|
|
10
|
-
match
|
|
11
|
-
group
|
|
12
|
+
match "down"
|
|
13
|
+
group "Byebug"
|
|
12
14
|
|
|
13
|
-
description
|
|
15
|
+
description "Move current frame down."
|
|
14
16
|
|
|
15
17
|
banner <<-BANNER
|
|
16
18
|
Usage: down [TIMES]
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "pry-byebug/helpers/navigation"
|
|
2
4
|
|
|
3
5
|
module PryByebug
|
|
4
6
|
#
|
|
@@ -7,9 +9,9 @@ module PryByebug
|
|
|
7
9
|
class FinishCommand < Pry::ClassCommand
|
|
8
10
|
include PryByebug::Helpers::Navigation
|
|
9
11
|
|
|
10
|
-
match
|
|
11
|
-
group
|
|
12
|
-
description
|
|
12
|
+
match "finish"
|
|
13
|
+
group "Byebug"
|
|
14
|
+
description "Execute until current stack frame returns."
|
|
13
15
|
|
|
14
16
|
banner <<-BANNER
|
|
15
17
|
Usage: finish
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "pry-byebug/helpers/navigation"
|
|
2
4
|
|
|
3
5
|
module PryByebug
|
|
4
6
|
#
|
|
@@ -7,10 +9,10 @@ module PryByebug
|
|
|
7
9
|
class FrameCommand < Pry::ClassCommand
|
|
8
10
|
include Helpers::Navigation
|
|
9
11
|
|
|
10
|
-
match
|
|
11
|
-
group
|
|
12
|
+
match "frame"
|
|
13
|
+
group "Byebug"
|
|
12
14
|
|
|
13
|
-
description
|
|
15
|
+
description "Move to specified frame #."
|
|
14
16
|
|
|
15
17
|
banner <<-BANNER
|
|
16
18
|
Usage: frame [TIMES]
|
|
@@ -20,7 +22,7 @@ module PryByebug
|
|
|
20
22
|
Examples:
|
|
21
23
|
frame #=> Show current frame #.
|
|
22
24
|
frame 5 #=> Move to frame 5.
|
|
23
|
-
|
|
25
|
+
BANNER
|
|
24
26
|
|
|
25
27
|
def process
|
|
26
28
|
PryByebug.check_file_context(target)
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "pry-byebug/helpers/navigation"
|
|
4
|
+
require "pry-byebug/helpers/multiline"
|
|
3
5
|
|
|
4
6
|
module PryByebug
|
|
5
7
|
#
|
|
@@ -9,9 +11,9 @@ module PryByebug
|
|
|
9
11
|
include Helpers::Navigation
|
|
10
12
|
include Helpers::Multiline
|
|
11
13
|
|
|
12
|
-
match
|
|
13
|
-
group
|
|
14
|
-
description
|
|
14
|
+
match "next"
|
|
15
|
+
group "Byebug"
|
|
16
|
+
description "Execute the next line within the current stack frame."
|
|
15
17
|
|
|
16
18
|
banner <<-BANNER
|
|
17
19
|
Usage: next [LINES]
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "pry-byebug/helpers/navigation"
|
|
2
4
|
|
|
3
5
|
module PryByebug
|
|
4
6
|
#
|
|
@@ -7,9 +9,9 @@ module PryByebug
|
|
|
7
9
|
class StepCommand < Pry::ClassCommand
|
|
8
10
|
include Helpers::Navigation
|
|
9
11
|
|
|
10
|
-
match
|
|
11
|
-
group
|
|
12
|
-
description
|
|
12
|
+
match "step"
|
|
13
|
+
group "Byebug"
|
|
14
|
+
description "Step execution into the next line or method."
|
|
13
15
|
|
|
14
16
|
banner <<-BANNER
|
|
15
17
|
Usage: step [TIMES]
|
|
@@ -19,7 +21,7 @@ module PryByebug
|
|
|
19
21
|
Examples:
|
|
20
22
|
step #=> Move a single step forward.
|
|
21
23
|
step 5 #=> Execute the next 5 steps.
|
|
22
|
-
|
|
24
|
+
BANNER
|
|
23
25
|
|
|
24
26
|
def process
|
|
25
27
|
PryByebug.check_file_context(target)
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "pry-byebug/helpers/navigation"
|
|
2
4
|
|
|
3
5
|
module PryByebug
|
|
4
6
|
#
|
|
@@ -7,10 +9,10 @@ module PryByebug
|
|
|
7
9
|
class UpCommand < Pry::ClassCommand
|
|
8
10
|
include Helpers::Navigation
|
|
9
11
|
|
|
10
|
-
match
|
|
11
|
-
group
|
|
12
|
+
match "up"
|
|
13
|
+
group "Byebug"
|
|
12
14
|
|
|
13
|
-
description
|
|
15
|
+
description "Move current frame up."
|
|
14
16
|
|
|
15
17
|
banner <<-BANNER
|
|
16
18
|
Usage: up [TIMES]
|
data/lib/pry-byebug/commands.rb
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
require
|
|
4
|
-
require
|
|
5
|
-
require
|
|
6
|
-
require
|
|
7
|
-
require
|
|
8
|
-
require
|
|
9
|
-
require
|
|
10
|
-
require
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "pry-byebug/commands/backtrace"
|
|
4
|
+
require "pry-byebug/commands/next"
|
|
5
|
+
require "pry-byebug/commands/step"
|
|
6
|
+
require "pry-byebug/commands/continue"
|
|
7
|
+
require "pry-byebug/commands/finish"
|
|
8
|
+
require "pry-byebug/commands/up"
|
|
9
|
+
require "pry-byebug/commands/down"
|
|
10
|
+
require "pry-byebug/commands/frame"
|
|
11
|
+
require "pry-byebug/commands/breakpoint"
|
|
12
|
+
require "pry-byebug/commands/exit_all"
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
original_handler = Pry.config.control_d_handler
|
|
2
4
|
|
|
3
|
-
Pry.config.control_d_handler = proc do |
|
|
5
|
+
Pry.config.control_d_handler = proc do |pry_instance|
|
|
4
6
|
Byebug.stop if Byebug.stoppable?
|
|
5
7
|
|
|
6
|
-
original_handler.call(
|
|
8
|
+
original_handler.call(pry_instance)
|
|
7
9
|
end
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "byebug"
|
|
2
4
|
|
|
3
5
|
module PryByebug
|
|
4
6
|
module Helpers
|
|
@@ -13,19 +15,11 @@ module PryByebug
|
|
|
13
15
|
Pry::Byebug::Breakpoints
|
|
14
16
|
end
|
|
15
17
|
|
|
16
|
-
#
|
|
17
|
-
# Current file in the target binding. Used as the default breakpoint
|
|
18
|
-
# location.
|
|
19
|
-
#
|
|
20
|
-
def current_file
|
|
21
|
-
target.eval('__FILE__')
|
|
22
|
-
end
|
|
23
|
-
|
|
24
18
|
#
|
|
25
19
|
# Prints a message with bold font.
|
|
26
20
|
#
|
|
27
21
|
def bold_puts(msg)
|
|
28
|
-
output.puts(
|
|
22
|
+
output.puts(bold(msg))
|
|
29
23
|
end
|
|
30
24
|
|
|
31
25
|
#
|
|
@@ -33,28 +27,32 @@ module PryByebug
|
|
|
33
27
|
#
|
|
34
28
|
# Includes surrounding code at that point.
|
|
35
29
|
#
|
|
36
|
-
def print_full_breakpoint(
|
|
37
|
-
header = "Breakpoint #{
|
|
38
|
-
status =
|
|
39
|
-
code =
|
|
40
|
-
condition =
|
|
30
|
+
def print_full_breakpoint(breakpoint)
|
|
31
|
+
header = "Breakpoint #{breakpoint.id}:"
|
|
32
|
+
status = breakpoint.enabled? ? "Enabled" : "Disabled"
|
|
33
|
+
code = breakpoint.source_code.with_line_numbers.to_s
|
|
34
|
+
condition = if breakpoint.expr
|
|
35
|
+
"#{bold('Condition:')} #{breakpoint.expr}\n"
|
|
36
|
+
else
|
|
37
|
+
""
|
|
38
|
+
end
|
|
41
39
|
|
|
42
|
-
output.puts <<-
|
|
40
|
+
output.puts <<-BREAKPOINT.gsub(/ {8}/, "")
|
|
43
41
|
|
|
44
|
-
#{
|
|
42
|
+
#{bold(header)} #{breakpoint} (#{status}) #{condition}
|
|
45
43
|
|
|
46
44
|
#{code}
|
|
47
45
|
|
|
48
|
-
|
|
46
|
+
BREAKPOINT
|
|
49
47
|
end
|
|
50
48
|
|
|
51
49
|
#
|
|
52
50
|
# Print out concise information about a breakpoint.
|
|
53
51
|
#
|
|
54
52
|
def print_short_breakpoint(breakpoint)
|
|
55
|
-
id = format(
|
|
56
|
-
status = breakpoint.enabled? ?
|
|
57
|
-
expr = breakpoint.expr ? " #{breakpoint.expr} " :
|
|
53
|
+
id = format("%*d", max_width, breakpoint.id)
|
|
54
|
+
status = breakpoint.enabled? ? "Yes" : "No "
|
|
55
|
+
expr = breakpoint.expr ? " #{breakpoint.expr} " : ""
|
|
58
56
|
|
|
59
57
|
output.puts(" #{id} #{status} #{breakpoint}#{expr}")
|
|
60
58
|
end
|
|
@@ -65,12 +63,12 @@ module PryByebug
|
|
|
65
63
|
def print_breakpoints_header
|
|
66
64
|
header = "#{' ' * (max_width - 1)}# Enabled At "
|
|
67
65
|
|
|
68
|
-
output.puts <<-
|
|
66
|
+
output.puts <<-BREAKPOINTS.gsub(/ {8}/, "")
|
|
69
67
|
|
|
70
|
-
#{
|
|
71
|
-
#{
|
|
68
|
+
#{bold(header)}
|
|
69
|
+
#{bold('-' * header.size)}
|
|
72
70
|
|
|
73
|
-
|
|
71
|
+
BREAKPOINTS
|
|
74
72
|
end
|
|
75
73
|
|
|
76
74
|
#
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module PryByebug
|
|
4
|
+
module Helpers
|
|
5
|
+
#
|
|
6
|
+
# Compatibility helper to handle source location
|
|
7
|
+
#
|
|
8
|
+
module Location
|
|
9
|
+
module_function
|
|
10
|
+
|
|
11
|
+
#
|
|
12
|
+
# Current file in the target binding. Used as the default breakpoint
|
|
13
|
+
# location.
|
|
14
|
+
#
|
|
15
|
+
def current_file(source = target)
|
|
16
|
+
# Guard clause for Ruby >= 2.6 providing now Binding#source_location ...
|
|
17
|
+
return source.source_location[0] if source.respond_to?(:source_location)
|
|
18
|
+
|
|
19
|
+
# ... to avoid warning: 'eval may not return location in binding'
|
|
20
|
+
source.eval("__FILE__")
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module PryByebug
|
|
2
4
|
module Helpers
|
|
3
5
|
#
|
|
@@ -8,9 +10,9 @@ module PryByebug
|
|
|
8
10
|
# Breaks out of the REPL loop and signals tracer
|
|
9
11
|
#
|
|
10
12
|
def breakout_navigation(action, options = {})
|
|
11
|
-
|
|
13
|
+
pry_instance.binding_stack.clear
|
|
12
14
|
|
|
13
|
-
throw :breakout_nav, action: action, options: options, pry:
|
|
15
|
+
throw :breakout_nav, action: action, options: options, pry: pry_instance
|
|
14
16
|
end
|
|
15
17
|
end
|
|
16
18
|
end
|
data/lib/pry-byebug/pry_ext.rb
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "byebug/processors/pry_processor"
|
|
2
4
|
|
|
3
5
|
class << Pry
|
|
4
6
|
alias start_without_pry_byebug start
|
|
5
7
|
|
|
6
8
|
def start_with_pry_byebug(target = TOPLEVEL_BINDING, options = {})
|
|
7
9
|
if target.is_a?(Binding) && PryByebug.file_context?(target)
|
|
8
|
-
Byebug::PryProcessor.start unless ENV[
|
|
10
|
+
Byebug::PryProcessor.start unless ENV["DISABLE_PRY"]
|
|
9
11
|
else
|
|
10
12
|
# No need for the tracer unless we have a file context to step through
|
|
11
13
|
start_without_pry_byebug(target, options)
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "pry-remote"
|
|
2
4
|
|
|
3
5
|
module PryRemote
|
|
4
6
|
#
|
|
@@ -10,7 +12,7 @@ module PryRemote
|
|
|
10
12
|
# teardown the server right after Pry.start finishes.
|
|
11
13
|
#
|
|
12
14
|
def run
|
|
13
|
-
raise(
|
|
15
|
+
raise("Already running a pry-remote session!") if
|
|
14
16
|
PryByebug.current_remote_server
|
|
15
17
|
|
|
16
18
|
PryByebug.current_remote_server = self
|
|
@@ -38,5 +40,5 @@ end
|
|
|
38
40
|
# 'next' on the last line of a program won't hit Byebug::PryProcessor#run,
|
|
39
41
|
# which normally handles cleanup.
|
|
40
42
|
at_exit do
|
|
41
|
-
PryByebug.current_remote_server
|
|
43
|
+
PryByebug.current_remote_server&.teardown
|
|
42
44
|
end
|
data/lib/pry-byebug/version.rb
CHANGED
data/lib/pry-byebug.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pry-byebug
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.9.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- David Rodríguez
|
|
@@ -9,36 +9,36 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2020-03-21 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
|
-
name:
|
|
15
|
+
name: byebug
|
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
|
17
17
|
requirements:
|
|
18
18
|
- - "~>"
|
|
19
19
|
- !ruby/object:Gem::Version
|
|
20
|
-
version: '0
|
|
20
|
+
version: '11.0'
|
|
21
21
|
type: :runtime
|
|
22
22
|
prerelease: false
|
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
|
24
24
|
requirements:
|
|
25
25
|
- - "~>"
|
|
26
26
|
- !ruby/object:Gem::Version
|
|
27
|
-
version: '0
|
|
27
|
+
version: '11.0'
|
|
28
28
|
- !ruby/object:Gem::Dependency
|
|
29
|
-
name:
|
|
29
|
+
name: pry
|
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
|
31
31
|
requirements:
|
|
32
32
|
- - "~>"
|
|
33
33
|
- !ruby/object:Gem::Version
|
|
34
|
-
version:
|
|
34
|
+
version: 0.13.0
|
|
35
35
|
type: :runtime
|
|
36
36
|
prerelease: false
|
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
|
38
38
|
requirements:
|
|
39
39
|
- - "~>"
|
|
40
40
|
- !ruby/object:Gem::Version
|
|
41
|
-
version:
|
|
41
|
+
version: 0.13.0
|
|
42
42
|
description: |-
|
|
43
43
|
Combine 'pry' with 'byebug'. Adds 'step', 'next', 'finish',
|
|
44
44
|
'continue' and 'break' commands to control execution.
|
|
@@ -69,6 +69,7 @@ files:
|
|
|
69
69
|
- lib/pry-byebug/commands/up.rb
|
|
70
70
|
- lib/pry-byebug/control_d_handler.rb
|
|
71
71
|
- lib/pry-byebug/helpers/breakpoints.rb
|
|
72
|
+
- lib/pry-byebug/helpers/location.rb
|
|
72
73
|
- lib/pry-byebug/helpers/multiline.rb
|
|
73
74
|
- lib/pry-byebug/helpers/navigation.rb
|
|
74
75
|
- lib/pry-byebug/pry_ext.rb
|
|
@@ -87,15 +88,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
87
88
|
requirements:
|
|
88
89
|
- - ">="
|
|
89
90
|
- !ruby/object:Gem::Version
|
|
90
|
-
version: 2.
|
|
91
|
+
version: 2.4.0
|
|
91
92
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
92
93
|
requirements:
|
|
93
94
|
- - ">="
|
|
94
95
|
- !ruby/object:Gem::Version
|
|
95
96
|
version: '0'
|
|
96
97
|
requirements: []
|
|
97
|
-
|
|
98
|
-
rubygems_version: 2.6.12
|
|
98
|
+
rubygems_version: 3.2.0.pre1
|
|
99
99
|
signing_key:
|
|
100
100
|
specification_version: 4
|
|
101
101
|
summary: Fast debugging with Pry.
|