pry-stack_explorer 0.6.0 → 0.6.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.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/lib/pry-stack_explorer/commands.rb +62 -15
- data/lib/pry-stack_explorer/version.rb +1 -1
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 53b80cf3c06d7bdfaec826bed2ad1963a7bc69331d656e73b84d00e97a500197
|
4
|
+
data.tar.gz: 1942e6ad4fd0b43279d860aa06b2ca354b64eac8b713d426996b9a93a12f48d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2c51eb15eb17f9edff667c93fbead5a7ffe7fa1c4cd3114e516a2057e37ab728e8436f5123908d0fac07a823b2a61fbcc50072429fc8f5081c3c85be5bcaf1d2
|
7
|
+
data.tar.gz: 24dc58f1bfda481a2eddee4e294c953e7ead4bee736da3f07bc142f237e7fcb8b41da9a1bd39517ae53fb34a892b7cd9f2faae3240c2e382031b09ba31eced21
|
data/README.md
CHANGED
@@ -31,7 +31,7 @@ Commands:
|
|
31
31
|
|
32
32
|
In Gemfile:
|
33
33
|
```rb
|
34
|
-
gem 'pry-stack_explorer', '~> 0.
|
34
|
+
gem 'pry-stack_explorer', '~> 0.6.0'
|
35
35
|
```
|
36
36
|
|
37
37
|
```
|
@@ -43,7 +43,7 @@ gem install pry-stack_explorer
|
|
43
43
|
|
44
44
|
|
45
45
|
### Branches and compatible Ruby versions
|
46
|
-
* v0.5: Ruby 2.6+, Pry 0.13+
|
46
|
+
* v0.5, v0.6: Ruby 2.6+, Pry 0.13+
|
47
47
|
* v0.4.11+: Ruby 2.5, Pry 0.12+ (branch `0-4` – end-of-life in March 2021)
|
48
48
|
* v0.4.9.3: Older versions (unsupported)
|
49
49
|
|
@@ -247,6 +247,7 @@ module PryStackExplorer
|
|
247
247
|
opt.on :H, :head, "Display the first N stack frames (defaults to 10).", :optional_argument => true, :as => Integer, :default => 10
|
248
248
|
opt.on :T, :tail, "Display the last N stack frames (defaults to 10).", :optional_argument => true, :as => Integer, :default => 10
|
249
249
|
opt.on :c, :current, "Display N frames either side of current frame (default to 5).", :optional_argument => true, :as => Integer, :default => 5
|
250
|
+
opt.on :a, :app, "Display application frames only", optional_argument: true
|
250
251
|
end
|
251
252
|
|
252
253
|
def memoized_info(index, b, verbose)
|
@@ -290,26 +291,72 @@ module PryStackExplorer
|
|
290
291
|
private :selected_stack_frames
|
291
292
|
|
292
293
|
def process
|
293
|
-
|
294
|
-
|
294
|
+
return no_stack_available! unless frame_manager
|
295
|
+
|
296
|
+
title = "Showing all accessible frames in stack (#{frame_manager.bindings.size} in total):"
|
297
|
+
|
298
|
+
content = [
|
299
|
+
bold(title),
|
300
|
+
"---",
|
301
|
+
make_stack_lines
|
302
|
+
].join("\n")
|
303
|
+
|
304
|
+
stagger_output content
|
305
|
+
end
|
306
|
+
|
307
|
+
private
|
308
|
+
|
309
|
+
def make_stack_lines
|
310
|
+
frames_with_indices.map do |b, i|
|
311
|
+
make_stack_line(b, i, (i == frame_manager.binding_index))
|
312
|
+
end.join("\n")
|
313
|
+
end
|
314
|
+
|
315
|
+
def frames_with_indices
|
316
|
+
if opts.present?(:app) && defined?(ActiveSupport::BacktraceCleaner)
|
317
|
+
app_frames
|
295
318
|
else
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
end
|
307
|
-
end
|
319
|
+
offset_frames
|
320
|
+
end
|
321
|
+
end
|
322
|
+
|
323
|
+
# "=> #0 method_name <Class#method(...)>"
|
324
|
+
def make_stack_line(b, i, active)
|
325
|
+
arw = active ? "=>" : " "
|
326
|
+
|
327
|
+
"#{arw} ##{i} #{memoized_info(i, b, opts[:v])}"
|
328
|
+
end
|
308
329
|
|
309
|
-
|
330
|
+
def offset_frames
|
331
|
+
base_frame_index, frames = selected_stack_frames
|
332
|
+
|
333
|
+
frames.each_with_index.map do |frame, index|
|
334
|
+
[frame, index + base_frame_index]
|
310
335
|
end
|
311
336
|
end
|
312
337
|
|
338
|
+
def no_stack_available!
|
339
|
+
output.puts "No caller stack available!"
|
340
|
+
end
|
341
|
+
|
342
|
+
LOCATION_LAMBDA = ->(_binding){ _binding.source_location[0] }
|
343
|
+
|
344
|
+
def app_frames
|
345
|
+
locations = frame_manager.bindings.map(&LOCATION_LAMBDA)
|
346
|
+
filtered = backtrace_cleaner.clean(locations)
|
347
|
+
|
348
|
+
frame_manager.bindings
|
349
|
+
.each_with_index
|
350
|
+
.map
|
351
|
+
.select do |_binding, _index|
|
352
|
+
LOCATION_LAMBDA.call(_binding).in?(filtered)
|
353
|
+
end
|
354
|
+
end
|
355
|
+
|
356
|
+
# also see Rails::BacktraceCleaner
|
357
|
+
def backtrace_cleaner
|
358
|
+
@backtrace_cleaner ||= ActiveSupport::BacktraceCleaner.new
|
359
|
+
end
|
313
360
|
end
|
314
361
|
|
315
362
|
alias_command "show-stack", "stack"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pry-stack_explorer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Mair (banisterfiend)
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: binding_of_caller
|
@@ -83,7 +83,10 @@ files:
|
|
83
83
|
homepage: https://github.com/pry/pry-stack_explorer
|
84
84
|
licenses:
|
85
85
|
- MIT
|
86
|
-
metadata:
|
86
|
+
metadata:
|
87
|
+
bug_tracker_uri: https://github.com/pry/pry-stack_explorer/issues
|
88
|
+
source_code_uri: https://github.com/pry/pry-stack_explorer
|
89
|
+
changelog_uri: https://github.com/pry/pry-stack_explorer/blob/master/CHANGELOG
|
87
90
|
post_install_message:
|
88
91
|
rdoc_options: []
|
89
92
|
require_paths:
|