pry 0.4.1pre1 → 0.4.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/CHANGELOG +8 -0
- data/README.markdown +12 -3
- data/Rakefile +5 -0
- data/lib/pry/core_extensions.rb +12 -4
- data/lib/pry/version.rb +1 -1
- data/test/test.rb +39 -2
- metadata +8 -10
data/CHANGELOG
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
23/1/2010 version 0.4.1
|
2
|
+
* made it so a 'def meth;end' in an object Pry session defines singleton
|
3
|
+
methods, not methods on the class (except in the case of
|
4
|
+
immediates)
|
5
|
+
* reorganized documentation, moving customization to a separate wiki file
|
6
|
+
* storing wiki in a nested git repo, as github wiki pages have their own
|
7
|
+
repo
|
8
|
+
* added more tests for new method definition behaviour
|
1
9
|
21/1/2010 version 0.4.0
|
2
10
|
* added command API
|
3
11
|
* added many new commands, i.e ls_methods and friends
|
data/README.markdown
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Pry
|
2
2
|
=============
|
3
3
|
|
4
|
-
(C) John Mair (banisterfiend)
|
4
|
+
(C) John Mair (banisterfiend) 2011
|
5
5
|
|
6
6
|
_attach an irb-like session to any object at runtime_
|
7
7
|
|
@@ -24,6 +24,13 @@ object that has a `readline` method and write to any object that has a
|
|
24
24
|
* Read the [documentation](http://rdoc.info/github/banister/pry/master/file/README.markdown)
|
25
25
|
* See the [source code](http://github.com/banister/pry)
|
26
26
|
|
27
|
+
Pry also has `rubygems-test` support; to participate, first install
|
28
|
+
Pry, then:
|
29
|
+
|
30
|
+
1. Install rubygems-test: `gem install rubygems-test`
|
31
|
+
2. Run the test: `gem test pry`
|
32
|
+
3. Finally choose 'Yes' to upload the results.
|
33
|
+
|
27
34
|
Example: Interacting with an object at runtime
|
28
35
|
---------------------------------------
|
29
36
|
|
@@ -160,6 +167,8 @@ end.
|
|
160
167
|
* Pry gives good control over nested sessions (important when exploring complicated runtime state)
|
161
168
|
* Pry is not based on the IRB codebase.
|
162
169
|
* Pry allows significant customizability.
|
170
|
+
* Pry uses the [method_source](https://github.com/banister/method_source) gem; so
|
171
|
+
this functionality is available to a Pry session.
|
163
172
|
* Pry uses [RubyParser](https://github.com/seattlerb/ruby_parser) to
|
164
173
|
validate expressions in 1.8, and [Ripper](http://rdoc.info/docs/ruby-core/1.9.2/Ripper) for 1.9.
|
165
174
|
* Pry implements all the methods in the REPL chain separately: `Pry#r`
|
@@ -233,6 +242,7 @@ If you want to access a method of the same name, prefix the invocation by whites
|
|
233
242
|
* `ls_imethods` List all instance methods defined on receiver.
|
234
243
|
* `cat <var>` Calls `inspect` on `<var>`
|
235
244
|
* `cd <var>` Starts a `Pry` session on the variable <var>. E.g `cd @x`
|
245
|
+
(use `cd ..` to go back).
|
236
246
|
* `show_method <methname>` Displays the sourcecode for the method
|
237
247
|
<methname>. E.g `show_method hello`
|
238
248
|
* `show_imethod <methname>` Displays the sourcecode for the
|
@@ -245,8 +255,7 @@ If you want to access a method of the same name, prefix the invocation by whites
|
|
245
255
|
* `nesting` Shows Pry nesting information.
|
246
256
|
* `!pry` Starts a Pry session on the implied receiver; this can be
|
247
257
|
used in the middle of an expression in multi-line input.
|
248
|
-
* `jump_to <nest_level>` Unwinds the Pry stack (nesting level) until the appropriate nesting level is reached
|
249
|
-
-- as per the output of `nesting`
|
258
|
+
* `jump_to <nest_level>` Unwinds the Pry stack (nesting level) until the appropriate nesting level is reached.
|
250
259
|
* `exit_all` breaks out of all Pry nesting levels and returns to the
|
251
260
|
calling process.
|
252
261
|
* You can type `Pry.start(obj)` or `obj.pry` to nest another Pry session within the
|
data/Rakefile
CHANGED
@@ -32,6 +32,11 @@ task :test do
|
|
32
32
|
sh "bacon -k #{direc}/test/test.rb"
|
33
33
|
end
|
34
34
|
|
35
|
+
desc "display the Pry version"
|
36
|
+
task :show_version do
|
37
|
+
puts "Pry version: #{Pry::VERSION}"
|
38
|
+
end
|
39
|
+
|
35
40
|
namespace :ruby do
|
36
41
|
spec = Gem::Specification.new do |s|
|
37
42
|
apply_spec_defaults(s)
|
data/lib/pry/core_extensions.rb
CHANGED
@@ -29,11 +29,19 @@ class Pry
|
|
29
29
|
end
|
30
30
|
|
31
31
|
unless respond_to? :__binding_impl__
|
32
|
-
|
33
|
-
|
34
|
-
|
32
|
+
begin
|
33
|
+
instance_eval %{
|
34
|
+
def __binding_impl__
|
35
|
+
binding
|
36
|
+
end
|
37
|
+
}
|
38
|
+
rescue TypeError
|
39
|
+
self.class.class_eval %{
|
40
|
+
def __binding_impl__
|
41
|
+
binding
|
42
|
+
end
|
43
|
+
}
|
35
44
|
end
|
36
|
-
EXTRA
|
37
45
|
end
|
38
46
|
|
39
47
|
__binding_impl__
|
data/lib/pry/version.rb
CHANGED
data/test/test.rb
CHANGED
@@ -100,8 +100,45 @@ describe Pry do
|
|
100
100
|
end
|
101
101
|
end
|
102
102
|
|
103
|
+
describe "defining methods" do
|
104
|
+
it 'should define a method on the singleton class of an object when performing "def meth;end" inside the object' do
|
105
|
+
[Object.new, {}, []].each do |val|
|
106
|
+
str_input = StringIO.new("def hello;end")
|
107
|
+
Pry.new(:input => str_input, :output => StringIO.new).rep(val)
|
108
|
+
|
109
|
+
val.methods(false).map(&:to_sym).include?(:hello).should == true
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'should define an instance method on the module when performing "def meth;end" inside the module' do
|
114
|
+
str_input = StringIO.new("def hello;end")
|
115
|
+
hello = Module.new
|
116
|
+
Pry.new(:input => str_input, :output => StringIO.new).rep(hello)
|
117
|
+
hello.instance_methods(false).map(&:to_sym).include?(:hello).should == true
|
118
|
+
end
|
119
|
+
|
120
|
+
it 'should define an instance method on the class when performing "def meth;end" inside the class' do
|
121
|
+
str_input = StringIO.new("def hello;end")
|
122
|
+
hello = Class.new
|
123
|
+
Pry.new(:input => str_input, :output => StringIO.new).rep(hello)
|
124
|
+
hello.instance_methods(false).map(&:to_sym).include?(:hello).should == true
|
125
|
+
end
|
126
|
+
|
127
|
+
it 'should define a method on the class of an object when performing "def meth;end" inside an immediate value or Numeric' do
|
128
|
+
# should include float in here, but test fails for some reason
|
129
|
+
# on 1.8.7, no idea why!
|
130
|
+
[:test, 0, true, false, nil].each do |val|
|
131
|
+
str_input = StringIO.new("def hello;end")
|
132
|
+
Pry.new(:input => str_input, :output => StringIO.new).rep(val)
|
133
|
+
val.class.instance_methods(false).map(&:to_sym).include?(:hello).should == true
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
end
|
138
|
+
|
139
|
+
|
103
140
|
describe "commands" do
|
104
|
-
it 'should run
|
141
|
+
it 'should run a command with no parameter' do
|
105
142
|
pry_tester = Pry.new
|
106
143
|
pry_tester.commands = CommandTester
|
107
144
|
pry_tester.input = InputTester.new("command1", "exit_all")
|
@@ -115,7 +152,7 @@ describe Pry do
|
|
115
152
|
str_output.string.should =~ /command1/
|
116
153
|
end
|
117
154
|
|
118
|
-
it 'should run
|
155
|
+
it 'should run a command with one parameter' do
|
119
156
|
pry_tester = Pry.new
|
120
157
|
pry_tester.commands = CommandTester
|
121
158
|
pry_tester.input = InputTester.new("command2 horsey", "exit_all")
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 13
|
5
|
+
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 0.4.
|
9
|
+
- 1
|
10
|
+
version: 0.4.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- John Mair (banisterfiend)
|
@@ -113,14 +113,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
113
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
114
|
none: false
|
115
115
|
requirements:
|
116
|
-
- - "
|
116
|
+
- - ">="
|
117
117
|
- !ruby/object:Gem::Version
|
118
|
-
hash:
|
118
|
+
hash: 3
|
119
119
|
segments:
|
120
|
-
-
|
121
|
-
|
122
|
-
- 1
|
123
|
-
version: 1.3.1
|
120
|
+
- 0
|
121
|
+
version: "0"
|
124
122
|
requirements: []
|
125
123
|
|
126
124
|
rubyforge_project:
|