pry-stack_explorer 0.2.9pre4 → 0.2.9pre5

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -23,7 +23,7 @@ def apply_spec_defaults(s)
23
23
  s.description = s.summary
24
24
  s.require_path = 'lib'
25
25
  s.add_dependency("binding_of_caller","~>0.6.1")
26
- s.add_dependency("pry","0.9.8pre4")
26
+ s.add_dependency("pry","0.9.8pre6")
27
27
  s.add_development_dependency("bacon","~>1.1.0")
28
28
  s.add_development_dependency('rake', '~> 0.9')
29
29
  s.required_ruby_version = '>= 1.9.2'
@@ -10,68 +10,105 @@ require "binding_of_caller"
10
10
 
11
11
  module PryStackExplorer
12
12
 
13
- # @return [Hash] The hash storing all frames for all Pry instances for
14
- # the current thread
15
- def self.frame_hash
16
- Thread.current[:__pry_frame_managers__]
17
- end
18
-
19
- def self.init_frame_hash
20
- Thread.current[:__pry_frame_managers__] ||= Hash.new { |h, k| h[k] = [] }
21
- end
22
-
23
- # Create a `Pry::FrameManager` object and push it onto the frame
24
- # manager stack for the relevant `_pry_` instance.
25
- # @param [Array] bindings The array of bindings (frames)
26
- # @param [Pry] _pry_ The Pry instance associated with the frame manager
27
- def self.create_and_push_frame_manager(bindings, _pry_)
28
- init_frame_hash
29
- frame_hash[_pry_].push FrameManager.new(bindings, _pry_)
30
- end
31
-
32
- # Return the complete frame manager stack for the Pry instance
33
- # @param [Pry] _pry_ The Pry instance associated with the frame
34
- # managers
35
- # @return [Array] The stack of Pry::FrameManager objections
36
- def self.frame_managers(_pry_)
37
- init_frame_hash
38
- frame_hash[_pry_]
39
- end
40
-
41
- # Delete the currently active frame manager
42
- # @param [Pry] _pry_ The Pry instance associated with the frame managers
43
- def self.pop_frame_manager(_pry_)
44
- init_frame_hash
45
- popped = frame_managers(_pry_).pop
46
- frame_hash.delete(_pry_) if frame_managers(_pry_).empty?
47
- _pry_.backtrace = popped.prior_backtrace
48
- popped
49
- end
50
-
51
- # Clear the stack of frame managers for the Pry instance
52
- # @param [Pry] _pry_ The Pry instance associated with the frame managers
53
- def self.clear_frame_managers(_pry_)
54
- init_frame_hash
55
- pop_frame_manager(_pry_) until frame_managers(_pry_).empty?
56
- frame_hash.delete(_pry_) # this line should be unnecessary!
57
- end
58
-
59
- class << self; alias_method :delete_frame_managers, :clear_frame_managers; end
60
-
61
- # @return [PryStackExplorer::FrameManager] The currently active frame manager
62
- def self.frame_manager(_pry_)
63
- init_frame_hash
64
- frame_hash[_pry_].last
65
- end
66
-
67
- # Simple test to check whether two `Binding` objects are equal.
68
- # @param [Binding] b1 First binding.
69
- # @param [Binding] b2 Second binding.
70
- def self.bindings_equal?(b1, b2)
71
- (b1.eval('self') == b2.eval('self')) &&
72
- (b1.eval('__method__') == b2.eval('__method__')) &&
73
- (b1.eval('local_variables').map { |v| b1.eval("#{v}") } ==
74
- b2.eval('local_variables').map { |v| b2.eval("#{v}") })
13
+ class << self
14
+ # @return [Hash] The hash storing all frames for all Pry instances for
15
+ # the current thread.
16
+ def frame_hash
17
+ Thread.current[:__pry_frame_managers__] ||= Hash.new { |h, k| h[k] = [] }
18
+ end
19
+
20
+ # Return the complete frame manager stack for the Pry instance
21
+ # @param [Pry] _pry_ The Pry instance associated with the frame
22
+ # managers
23
+ # @return [Array] The stack of Pry::FrameManager objections
24
+ def frame_managers(_pry_)
25
+ frame_hash[_pry_]
26
+ end
27
+
28
+ # Create a `Pry::FrameManager` object and push it onto the frame
29
+ # manager stack for the relevant `_pry_` instance.
30
+ # @param [Array] bindings The array of bindings (frames)
31
+ # @param [Pry] _pry_ The Pry instance associated with the frame manager
32
+ def create_and_push_frame_manager(bindings, _pry_, options={})
33
+ fm = FrameManager.new(bindings, _pry_)
34
+ frame_hash[_pry_].push fm
35
+ push_helper(fm, options)
36
+ fm
37
+ end
38
+
39
+ # Update the Pry instance to operate on the specified frame for the
40
+ # current frame manager.
41
+ # @param [PryStackExplorer::FrameManager] fm The active frame manager.
42
+ # @param [Hash] options The options hash.
43
+ def push_helper(fm, options={})
44
+ options = {
45
+ :initial_frame => 0
46
+ }.merge!(options)
47
+
48
+ fm.change_frame_to(options[:initial_frame], false)
49
+ end
50
+
51
+ private :push_helper
52
+
53
+ # Delete the currently active frame manager
54
+ # @param [Pry] _pry_ The Pry instance associated with the frame
55
+ # managers.
56
+ # @return [Pry::FrameManager] The popped frame manager.
57
+ def pop_frame_manager(_pry_)
58
+ return if frame_managers(_pry_).empty?
59
+
60
+ popped_fm = frame_managers(_pry_).pop
61
+ pop_helper(popped_fm, _pry_)
62
+ popped_fm
63
+ end
64
+
65
+ # Restore the Pry instance to operate on the previous
66
+ # binding. Also responsible for restoring Pry instance's backtrace.
67
+ # @param [Pry::FrameManager] popped_fm The recently popped frame manager.
68
+ # @param [Pry] _pry_ The Pry instance associated with the frame managers.
69
+ def pop_helper(popped_fm, _pry_)
70
+ if frame_managers(_pry_).empty?
71
+ if _pry_.binding_stack.empty?
72
+ _pry_.binding_stack.push popped_fm.prior_binding
73
+ else
74
+ _pry_.binding_stack[-1] = popped_fm.prior_binding
75
+ end
76
+
77
+ frame_hash.delete(_pry_)
78
+ else
79
+ frame_manager(_pry_).refresh_frame(false)
80
+ end
81
+
82
+ # restore backtrace
83
+ _pry_.backtrace = popped_fm.prior_backtrace
84
+ end
85
+
86
+ private :pop_helper
87
+
88
+ # Clear the stack of frame managers for the Pry instance
89
+ # @param [Pry] _pry_ The Pry instance associated with the frame managers
90
+ def clear_frame_managers(_pry_)
91
+ pop_frame_manager(_pry_) until frame_managers(_pry_).empty?
92
+ frame_hash.delete(_pry_) # this line should be unnecessary!
93
+ end
94
+
95
+ alias_method :delete_frame_managers, :clear_frame_managers
96
+
97
+ # @return [PryStackExplorer::FrameManager] The currently active frame manager
98
+ def frame_manager(_pry_)
99
+ frame_hash[_pry_].last
100
+ end
101
+
102
+ # Simple test to check whether two `Binding` objects are equal.
103
+ # @param [Binding] b1 First binding.
104
+ # @param [Binding] b2 Second binding.
105
+ # @return [Boolean] Whether the `Binding`s are equal.
106
+ def bindings_equal?(b1, b2)
107
+ (b1.eval('self') == b2.eval('self')) &&
108
+ (b1.eval('__method__') == b2.eval('__method__')) &&
109
+ (b1.eval('local_variables').map { |v| b1.eval("#{v}") } ==
110
+ b2.eval('local_variables').map { |v| b2.eval("#{v}") })
111
+ end
75
112
  end
76
113
  end
77
114
 
@@ -3,9 +3,13 @@ module PryStackExplorer
3
3
  class FrameManager
4
4
  include Enumerable
5
5
 
6
- attr_accessor :binding_index
6
+ # @return [Array<Binding>] The array of bindings that constitute
7
+ # the call-stack.
7
8
  attr_accessor :bindings
8
9
 
10
+ # @return [Fixnum] The index of the active frame (binding) in the call-stack.
11
+ attr_accessor :binding_index
12
+
9
13
  # @return [Hash] A hash for user defined data
10
14
  attr_reader :user
11
15
 
@@ -1,3 +1,3 @@
1
1
  module PryStackExplorer
2
- VERSION = "0.2.9pre4"
2
+ VERSION = "0.2.9pre5"
3
3
  end
@@ -4,10 +4,10 @@ module PryStackExplorer
4
4
  def caller_bindings(binding_stack)
5
5
  target = binding_stack.last
6
6
 
7
- if binding.of_caller(6).eval('__method__') == :pry
8
- drop_number = 8
7
+ if binding.of_caller(7).eval('__method__') == :pry
8
+ drop_number = 9
9
9
  else
10
- drop_number = 7
10
+ drop_number = 8
11
11
  end
12
12
 
13
13
  bindings = binding.callers.drop(drop_number)
@@ -24,22 +24,24 @@ module PryStackExplorer
24
24
  end
25
25
 
26
26
  def call(binding_stack, options, _pry_)
27
- options[:call_stack] = true unless options.has_key?(:call_stack)
28
- options[:initial_frame] = 0 unless options.has_key?(:initial_frame)
29
- initial_frame = options[:initial_frame]
27
+ options = {
28
+ :call_stack => true,
29
+ :initial_frame => 0
30
+ }.merge!(options)
30
31
 
31
32
  return if !options[:call_stack]
32
33
 
33
34
  if options[:call_stack].is_a?(Array)
34
35
  bindings = options[:call_stack]
35
- raise ArgumentError, ":call_stack must be an array of bindings" if bindings.empty? || !bindings.all? { |v| v.is_a?(Binding) }
36
+
37
+ if bindings.empty? || !bindings.all? { |v| v.is_a?(Binding) }
38
+ raise ArgumentError, ":call_stack must be an array of bindings"
39
+ end
36
40
  else
37
- bindings = caller_bindings(binding_stack)
41
+ bindings = caller_bindings(binding_stack)
38
42
  end
39
43
 
40
- binding_stack.replace [bindings[initial_frame]]
41
- PryStackExplorer.create_and_push_frame_manager(bindings, _pry_)
42
- PryStackExplorer.frame_manager(_pry_).set_binding_index_safely(initial_frame)
44
+ PryStackExplorer.create_and_push_frame_manager bindings, _pry_, :initial_frame => options[:initial_frame]
43
45
  end
44
46
  end
45
47
  end
@@ -1,39 +1,39 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
 
3
3
  Gem::Specification.new do |s|
4
- s.name = "pry-stack_explorer"
5
- s.version = "0.2.9pre4"
4
+ s.name = %q{pry-stack_explorer}
5
+ s.version = "0.2.9pre5"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
8
- s.authors = ["John Mair (banisterfiend)"]
9
- s.date = "2012-01-16"
10
- s.description = "Walk the stack in a Pry session"
11
- s.email = "jrmair@gmail.com"
12
- s.files = [".gemtest", ".gitignore", ".travis.yml", ".yardopts", "CHANGELOG", "Gemfile", "LICENSE", "README.md", "Rakefile", "examples/example.rb", "examples/example2.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
- s.homepage = "https://github.com/banister"
14
- s.require_paths = ["lib"]
8
+ s.authors = [%q{John Mair (banisterfiend)}]
9
+ s.date = %q{2012-01-20}
10
+ s.description = %q{Walk the stack in a Pry session}
11
+ s.email = %q{jrmair@gmail.com}
12
+ s.files = [%q{.gemtest}, %q{.gitignore}, %q{.travis.yml}, %q{.yardopts}, %q{CHANGELOG}, %q{Gemfile}, %q{LICENSE}, %q{README.md}, %q{Rakefile}, %q{examples/example.rb}, %q{examples/example2.rb}, %q{lib/pry-stack_explorer.rb}, %q{lib/pry-stack_explorer/commands.rb}, %q{lib/pry-stack_explorer/frame_manager.rb}, %q{lib/pry-stack_explorer/version.rb}, %q{lib/pry-stack_explorer/when_started_hook.rb}, %q{pry-stack_explorer.gemspec}, %q{test/helper.rb}, %q{test/test_commands.rb}, %q{test/test_frame_manager.rb}, %q{test/test_stack_explorer.rb}, %q{tester.rb}]
13
+ s.homepage = %q{https://github.com/banister}
14
+ s.require_paths = [%q{lib}]
15
15
  s.required_ruby_version = Gem::Requirement.new(">= 1.9.2")
16
- s.rubygems_version = "1.8.11"
17
- s.summary = "Walk the stack in a Pry session"
18
- s.test_files = ["test/helper.rb", "test/test_commands.rb", "test/test_frame_manager.rb", "test/test_stack_explorer.rb"]
16
+ s.rubygems_version = %q{1.8.6}
17
+ s.summary = %q{Walk the stack in a Pry session}
18
+ s.test_files = [%q{test/helper.rb}, %q{test/test_commands.rb}, %q{test/test_frame_manager.rb}, %q{test/test_stack_explorer.rb}]
19
19
 
20
20
  if s.respond_to? :specification_version then
21
21
  s.specification_version = 3
22
22
 
23
23
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
24
24
  s.add_runtime_dependency(%q<binding_of_caller>, ["~> 0.6.1"])
25
- s.add_runtime_dependency(%q<pry>, ["= 0.9.8pre4"])
25
+ s.add_runtime_dependency(%q<pry>, ["= 0.9.8pre6"])
26
26
  s.add_development_dependency(%q<bacon>, ["~> 1.1.0"])
27
27
  s.add_development_dependency(%q<rake>, ["~> 0.9"])
28
28
  else
29
29
  s.add_dependency(%q<binding_of_caller>, ["~> 0.6.1"])
30
- s.add_dependency(%q<pry>, ["= 0.9.8pre4"])
30
+ s.add_dependency(%q<pry>, ["= 0.9.8pre6"])
31
31
  s.add_dependency(%q<bacon>, ["~> 1.1.0"])
32
32
  s.add_dependency(%q<rake>, ["~> 0.9"])
33
33
  end
34
34
  else
35
35
  s.add_dependency(%q<binding_of_caller>, ["~> 0.6.1"])
36
- s.add_dependency(%q<pry>, ["= 0.9.8pre4"])
36
+ s.add_dependency(%q<pry>, ["= 0.9.8pre6"])
37
37
  s.add_dependency(%q<bacon>, ["~> 1.1.0"])
38
38
  s.add_dependency(%q<rake>, ["~> 0.9"])
39
39
  end
data/test/helper.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'rubygems'
2
+ require 'ostruct'
2
3
 
3
4
  unless Object.const_defined? 'PryStackExplorer'
4
5
  $:.unshift File.expand_path '../../lib', __FILE__
@@ -33,9 +33,9 @@ describe PryStackExplorer do
33
33
  class << o; attr_reader :frame; end
34
34
  def o.bing() bong end
35
35
  def o.bong() bang end
36
- def o.bang() Pry.start(binding, :initial_frame => 1) end
36
+ def o.bang() Pry.start(binding, :initial_frame => 1) end #*
37
37
 
38
- redirect_pry_io(StringIO.new("@frame = __method__\nexit\n"), out=StringIO.new) do
38
+ redirect_pry_io(StringIO.new("@frame = __method__\nexit-all\n"), out=StringIO.new) do
39
39
  o.bing
40
40
  end
41
41
 
@@ -93,14 +93,20 @@ describe PryStackExplorer do
93
93
  out.string.should =~ /beta.*?gamma.*?alpha/m
94
94
  end
95
95
 
96
- it 'should raise if custom call stack does not contain bindings or is empty' do
97
- redirect_pry_io(StringIO.new("show-stack\nexit\n"), out=StringIO.new) do
98
- lambda { Pry.start(binding, :call_stack => [1, 2, 3]) }.should.raise ArgumentError
96
+ it 'should raise if custom call stack does not contain bindings' do
97
+ o = OpenStruct.new
98
+ redirect_pry_io(StringIO.new("self.errors = _pry_.hooks.errors\nexit\n")) do
99
+ Pry.start(o, :call_stack => [1, 2, 3])
99
100
  end
101
+ o.errors.first.is_a?(ArgumentError).should == true
102
+ end
100
103
 
101
- redirect_pry_io(StringIO.new("show-stack\nexit\n"), out=StringIO.new) do
102
- lambda { Pry.start(binding, :call_stack => []) }.should.raise ArgumentError
104
+ it 'should raise if custom call stack is empty' do
105
+ o = OpenStruct.new
106
+ redirect_pry_io(StringIO.new("self.errors = _pry_.hooks.errors\nexit\n")) do
107
+ Pry.start o, :call_stack => []
103
108
  end
109
+ o.errors.first.is_a?(ArgumentError).should == true
104
110
  end
105
111
  end
106
112
  end
@@ -123,6 +129,12 @@ describe PryStackExplorer do
123
129
  PE.frame_managers(@pry_instance).count.should == 1
124
130
  end
125
131
 
132
+ it "should refresh Pry instance to use FrameManager's active binding" do
133
+ PE.create_and_push_frame_manager(@bindings, @pry_instance)
134
+ @pry_instance.binding_stack.size.should == 1
135
+ @pry_instance.binding_stack.first.should == @bindings.first
136
+ end
137
+
126
138
  it 'should save prior binding in FrameManager instance' do
127
139
  _pry_ = Pry.new
128
140
  _pry_.binding_stack.push(b=binding)
@@ -130,6 +142,28 @@ describe PryStackExplorer do
130
142
  PryStackExplorer.frame_manager(_pry_).prior_binding.should == b
131
143
  end
132
144
 
145
+ describe ":initial_frame option" do
146
+ it 'should start on specified frame' do
147
+ PE.create_and_push_frame_manager(@bindings, @pry_instance, :initial_frame => 1)
148
+ @pry_instance.binding_stack.size.should == 1
149
+ @pry_instance.binding_stack.first.should == @bindings.last
150
+ end
151
+
152
+ describe "negative numbers" do
153
+ it 'should work with negative frame number (-1)' do
154
+ PE.create_and_push_frame_manager(@bindings, @pry_instance, :initial_frame => -1)
155
+ @pry_instance.binding_stack.size.should == 1
156
+ @pry_instance.binding_stack.first.should == @bindings.last
157
+ end
158
+
159
+ it 'should work with negative frame number (-2)' do
160
+ PE.create_and_push_frame_manager(@bindings, @pry_instance, :initial_frame => -2)
161
+ @pry_instance.binding_stack.size.should == 1
162
+ @pry_instance.binding_stack.first.should == @bindings.first
163
+ end
164
+ end
165
+ end
166
+
133
167
  it 'should save prior backtrace in FrameManager instance' do
134
168
  _pry_ = Pry.new
135
169
  _pry_.backtrace = ["my backtrace"]
@@ -209,6 +243,53 @@ describe PryStackExplorer do
209
243
  PE.frame_hash.has_key?(@pry_instance).should == false
210
244
  end
211
245
 
246
+ it 'should not change size of binding_stack when popping' do
247
+ bindings = [bindings, bindings]
248
+ PE.create_and_push_frame_manager(bindings, @pry_instance)
249
+ PE.create_and_push_frame_manager(@bindings, @pry_instance)
250
+ PE.pop_frame_manager(@pry_instance)
251
+ @pry_instance.binding_stack.size.should == 1
252
+ end
253
+
254
+ it 'should return nil when popping non-existent frame manager' do
255
+ PE.pop_frame_manager(@pry_instance).should == nil
256
+ end
257
+
258
+ describe "restoring previous binding" do
259
+ it 'should restore previous binding for Pry instance on pop, where previous binding is not first frame' do
260
+ bindings = [binding, binding]
261
+ PE.create_and_push_frame_manager(bindings, @pry_instance).binding_index = 1
262
+ PE.create_and_push_frame_manager(@bindings, @pry_instance)
263
+ PE.pop_frame_manager(@pry_instance)
264
+ @pry_instance.binding_stack.first.should == bindings[1]
265
+ end
266
+
267
+ it 'should restore previous binding for Pry instance on pop (previous frame frame manager)' do
268
+ bindings = [binding, binding]
269
+ PE.create_and_push_frame_manager(bindings, @pry_instance)
270
+ PE.create_and_push_frame_manager(@bindings, @pry_instance)
271
+ PE.pop_frame_manager(@pry_instance)
272
+ @pry_instance.binding_stack.first.should == bindings.first
273
+ end
274
+
275
+ it 'should restore previous binding for Pry instance on pop (no previous frame manager)' do
276
+ b = binding
277
+ @pry_instance.binding_stack = [b]
278
+ PE.create_and_push_frame_manager(@bindings, @pry_instance)
279
+ PE.pop_frame_manager(@pry_instance)
280
+ @pry_instance.binding_stack.first.should == b
281
+ end
282
+
283
+ it 'should restore previous binding for Pry instance on pop (no previous frame manager AND no empty binding_stack)' do
284
+ b = binding
285
+ @pry_instance.binding_stack = [b]
286
+ PE.create_and_push_frame_manager(@bindings, @pry_instance)
287
+ @pry_instance.binding_stack.clear
288
+ PE.pop_frame_manager(@pry_instance)
289
+ @pry_instance.binding_stack.first.should == b
290
+ end
291
+ end
292
+
212
293
  describe "_pry_.backtrace" do
213
294
  it "should restore backtrace when frame is popped" do
214
295
  p1 = Pry.new
metadata CHANGED
@@ -1,70 +1,66 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: pry-stack_explorer
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.9pre5
4
5
  prerelease: 5
5
- version: 0.2.9pre4
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - John Mair (banisterfiend)
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2012-01-16 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2012-01-20 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: binding_of_caller
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70127592869260 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
18
+ requirements:
21
19
  - - ~>
22
- - !ruby/object:Gem::Version
20
+ - !ruby/object:Gem::Version
23
21
  version: 0.6.1
24
22
  type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: pry
28
23
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70127592869260
25
+ - !ruby/object:Gem::Dependency
26
+ name: pry
27
+ requirement: &70127592897240 !ruby/object:Gem::Requirement
30
28
  none: false
31
- requirements:
32
- - - "="
33
- - !ruby/object:Gem::Version
34
- version: 0.9.8pre4
29
+ requirements:
30
+ - - =
31
+ - !ruby/object:Gem::Version
32
+ version: 0.9.8pre6
35
33
  type: :runtime
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: bacon
39
34
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70127592897240
36
+ - !ruby/object:Gem::Dependency
37
+ name: bacon
38
+ requirement: &70127592900320 !ruby/object:Gem::Requirement
41
39
  none: false
42
- requirements:
40
+ requirements:
43
41
  - - ~>
44
- - !ruby/object:Gem::Version
42
+ - !ruby/object:Gem::Version
45
43
  version: 1.1.0
46
44
  type: :development
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: rake
50
45
  prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *70127592900320
47
+ - !ruby/object:Gem::Dependency
48
+ name: rake
49
+ requirement: &70127592903060 !ruby/object:Gem::Requirement
52
50
  none: false
53
- requirements:
51
+ requirements:
54
52
  - - ~>
55
- - !ruby/object:Gem::Version
56
- version: "0.9"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.9'
57
55
  type: :development
58
- version_requirements: *id004
56
+ prerelease: false
57
+ version_requirements: *70127592903060
59
58
  description: Walk the stack in a Pry session
60
59
  email: jrmair@gmail.com
61
60
  executables: []
62
-
63
61
  extensions: []
64
-
65
62
  extra_rdoc_files: []
66
-
67
- files:
63
+ files:
68
64
  - .gemtest
69
65
  - .gitignore
70
66
  - .travis.yml
@@ -89,32 +85,29 @@ files:
89
85
  - tester.rb
90
86
  homepage: https://github.com/banister
91
87
  licenses: []
92
-
93
88
  post_install_message:
94
89
  rdoc_options: []
95
-
96
- require_paths:
90
+ require_paths:
97
91
  - lib
98
- required_ruby_version: !ruby/object:Gem::Requirement
92
+ required_ruby_version: !ruby/object:Gem::Requirement
99
93
  none: false
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
94
+ requirements:
95
+ - - ! '>='
96
+ - !ruby/object:Gem::Version
103
97
  version: 1.9.2
104
- required_rubygems_version: !ruby/object:Gem::Requirement
98
+ required_rubygems_version: !ruby/object:Gem::Requirement
105
99
  none: false
106
- requirements:
107
- - - ">"
108
- - !ruby/object:Gem::Version
100
+ requirements:
101
+ - - ! '>'
102
+ - !ruby/object:Gem::Version
109
103
  version: 1.3.1
110
104
  requirements: []
111
-
112
105
  rubyforge_project:
113
- rubygems_version: 1.8.11
106
+ rubygems_version: 1.8.6
114
107
  signing_key:
115
108
  specification_version: 3
116
109
  summary: Walk the stack in a Pry session
117
- test_files:
110
+ test_files:
118
111
  - test/helper.rb
119
112
  - test/test_commands.rb
120
113
  - test/test_frame_manager.rb