pry-stack_explorer 0.4.7 → 0.4.8pre1
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/Rakefile +5 -3
- data/lib/pry-stack_explorer/version.rb +1 -1
- data/lib/pry-stack_explorer/when_started_hook.rb +8 -7
- data/lib/pry-stack_explorer.rb +1 -1
- data/pry-stack_explorer.gemspec +4 -4
- data/test/test_stack_explorer.rb +13 -1
- metadata +27 -12
data/Rakefile
CHANGED
@@ -6,7 +6,7 @@ direc = File.dirname(__FILE__)
|
|
6
6
|
PROJECT_NAME = "pry-stack_explorer"
|
7
7
|
|
8
8
|
require 'rake/clean'
|
9
|
-
require '
|
9
|
+
require 'rubygems/package_task'
|
10
10
|
require "#{PROJECT_NAME}/version"
|
11
11
|
|
12
12
|
CLOBBER.include("**/*~", "**/*#*", "**/*.log")
|
@@ -72,7 +72,7 @@ namespace :ruby do
|
|
72
72
|
s.platform = Gem::Platform::RUBY
|
73
73
|
end
|
74
74
|
|
75
|
-
|
75
|
+
Gem::PackageTask.new(spec) do |pkg|
|
76
76
|
pkg.need_zip = false
|
77
77
|
pkg.need_tar = false
|
78
78
|
end
|
@@ -97,6 +97,8 @@ task :reinstall => :gems do
|
|
97
97
|
sh "gem install #{direc}/pkg/#{PROJECT_NAME}-#{PryStackExplorer::VERSION}.gem"
|
98
98
|
end
|
99
99
|
|
100
|
+
task :install => :reinstall
|
101
|
+
|
100
102
|
desc "build and push latest gems"
|
101
103
|
task :pushgems => :gems do
|
102
104
|
chdir("#{File.dirname(__FILE__)}/pkg") do
|
@@ -106,4 +108,4 @@ task :pushgems => :gems do
|
|
106
108
|
end
|
107
109
|
end
|
108
110
|
|
109
|
-
|
111
|
+
task :pushgem => :pushgems
|
@@ -1,13 +1,14 @@
|
|
1
1
|
module PryStackExplorer
|
2
2
|
class WhenStartedHook
|
3
|
+
include Pry::Helpers::BaseHelpers
|
3
4
|
|
4
5
|
def caller_bindings(target)
|
5
6
|
bindings = binding.callers
|
6
7
|
|
7
8
|
start_frames = bindings.each_with_index.select do |b, i|
|
8
9
|
b.frame_type == :method &&
|
9
|
-
b.eval("self")
|
10
|
-
b.eval("__method__")
|
10
|
+
safe_send(b.eval("self"), :equal?, Pry) &&
|
11
|
+
safe_send(b.eval("__method__"), :==, :start)
|
11
12
|
end
|
12
13
|
|
13
14
|
start_frame_index = start_frames.first.last
|
@@ -16,21 +17,21 @@ module PryStackExplorer
|
|
16
17
|
idx1, idx2 = start_frames.take(2).map(&:last)
|
17
18
|
|
18
19
|
is_nested_session = bindings[idx1..idx2].detect do |b|
|
19
|
-
b.eval("__method__")
|
20
|
-
b.eval("self.class")
|
20
|
+
safe_send(b.eval("__method__"), :==, :re) &&
|
21
|
+
safe_send(b.eval("self.class"), :equal?, Pry)
|
21
22
|
end
|
22
23
|
|
23
24
|
start_frame_index = idx2 if !is_nested_session
|
24
25
|
end
|
25
26
|
|
26
27
|
bindings = bindings.drop(start_frame_index + 1)
|
27
|
-
|
28
|
-
bindings = bindings.drop(1) if bindings.first.eval("__method__")
|
29
|
-
bindings = bindings.drop_while { |b| b.eval("self.inspect") =~ /PryNav/ }
|
28
|
+
bindings = bindings.drop_while { |b| b.eval("__FILE__") =~ /pry-(?:nav|debugger)/ }
|
29
|
+
bindings = bindings.drop(1) if safe_send(bindings.first.eval("__method__"), :==, :pry)
|
30
30
|
|
31
31
|
# Use the binding returned by #of_caller if possible (as we get
|
32
32
|
# access to frame_type).
|
33
33
|
# Otherwise stick to the given binding (target).
|
34
|
+
|
34
35
|
if !PryStackExplorer.bindings_equal?(target, bindings.first)
|
35
36
|
bindings.shift
|
36
37
|
bindings.unshift(target)
|
data/lib/pry-stack_explorer.rb
CHANGED
@@ -106,7 +106,7 @@ module PryStackExplorer
|
|
106
106
|
# @param [Binding] b2 Second binding.
|
107
107
|
# @return [Boolean] Whether the `Binding`s are equal.
|
108
108
|
def bindings_equal?(b1, b2)
|
109
|
-
(b1.eval('self')
|
109
|
+
(b1.eval('self').equal?(b2.eval('self'))) &&
|
110
110
|
(b1.eval('__method__') == b2.eval('__method__')) &&
|
111
111
|
(b1.eval('local_variables').map { |v| b1.eval("#{v}") } ==
|
112
112
|
b2.eval('local_variables').map { |v| b2.eval("#{v}") })
|
data/pry-stack_explorer.gemspec
CHANGED
@@ -2,17 +2,17 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "pry-stack_explorer"
|
5
|
-
s.version = "0.4.
|
5
|
+
s.version = "0.4.8pre1"
|
6
6
|
|
7
|
-
s.required_rubygems_version = Gem::Requirement.new("
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["John Mair (banisterfiend)"]
|
9
|
-
s.date = "
|
9
|
+
s.date = "2013-01-30"
|
10
10
|
s.description = "Walk the stack in a Pry session"
|
11
11
|
s.email = "jrmair@gmail.com"
|
12
12
|
s.files = [".gemtest", ".gitignore", ".travis.yml", ".yardopts", "CHANGELOG", "Gemfile", "LICENSE", "README.md", "Rakefile", "examples/example.rb", "examples/example2.rb", "examples/example3.rb", "lib/pry-stack_explorer.rb", "lib/pry-stack_explorer/commands.rb", "lib/pry-stack_explorer/frame_manager.rb", "lib/pry-stack_explorer/version.rb", "lib/pry-stack_explorer/when_started_hook.rb", "pry-stack_explorer.gemspec", "test/helper.rb", "test/test_commands.rb", "test/test_frame_manager.rb", "test/test_stack_explorer.rb", "tester.rb"]
|
13
13
|
s.homepage = "https://github.com/banister"
|
14
14
|
s.require_paths = ["lib"]
|
15
|
-
s.rubygems_version = "1.8.
|
15
|
+
s.rubygems_version = "1.8.24"
|
16
16
|
s.summary = "Walk the stack in a Pry session"
|
17
17
|
s.test_files = ["test/helper.rb", "test/test_commands.rb", "test/test_frame_manager.rb", "test/test_stack_explorer.rb"]
|
18
18
|
|
data/test/test_stack_explorer.rb
CHANGED
@@ -84,6 +84,19 @@ describe PryStackExplorer do
|
|
84
84
|
o.frame.should == :beta
|
85
85
|
end
|
86
86
|
|
87
|
+
# regression test for #12
|
88
|
+
it 'does not infinite loop when pry is started in MyObject#==' do
|
89
|
+
o = Object.new
|
90
|
+
def o.==(other)
|
91
|
+
binding.pry
|
92
|
+
end
|
93
|
+
|
94
|
+
redirect_pry_io(InputTester.new(":hello", "exit-all"), out=StringIO.new) do
|
95
|
+
o.==(1)
|
96
|
+
end
|
97
|
+
|
98
|
+
out.string.should =~ /hello/
|
99
|
+
end
|
87
100
|
end
|
88
101
|
|
89
102
|
describe ":call_stack option" do
|
@@ -375,7 +388,6 @@ describe PryStackExplorer do
|
|
375
388
|
p1.backtrace.should == "my backtrace1"
|
376
389
|
end
|
377
390
|
end
|
378
|
-
|
379
391
|
end
|
380
392
|
end
|
381
393
|
end
|
metadata
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pry-stack_explorer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.8pre1
|
5
|
+
prerelease: 5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- John Mair (banisterfiend)
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-30 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: binding_of_caller
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: 0.6.8
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.6.8
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: bacon
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ~>
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: 1.1.0
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.1.0
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: rake
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ~>
|
@@ -43,7 +53,12 @@ dependencies:
|
|
43
53
|
version: '0.9'
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.9'
|
47
62
|
description: Walk the stack in a Pry session
|
48
63
|
email: jrmair@gmail.com
|
49
64
|
executables: []
|
@@ -88,12 +103,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
88
103
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
104
|
none: false
|
90
105
|
requirements:
|
91
|
-
- - ! '
|
106
|
+
- - ! '>'
|
92
107
|
- !ruby/object:Gem::Version
|
93
|
-
version:
|
108
|
+
version: 1.3.1
|
94
109
|
requirements: []
|
95
110
|
rubyforge_project:
|
96
|
-
rubygems_version: 1.8.
|
111
|
+
rubygems_version: 1.8.24
|
97
112
|
signing_key:
|
98
113
|
specification_version: 3
|
99
114
|
summary: Walk the stack in a Pry session
|