updated readme

This commit is contained in:
John Mair 2011-04-18 17:56:17 +12:00
parent fd007cb37d
commit 6d7cb1f11b
1 changed files with 7 additions and 74 deletions

View File

@ -8,7 +8,7 @@ Pry is a powerful alternative to the standard IRB shell for Ruby. It is
written from scratch to provide a number of advanced features, some of written from scratch to provide a number of advanced features, some of
these include: these include:
* Syntax higlighting * Syntax highlighting
* Navigation around state (`cd`, `ls` and friends) * Navigation around state (`cd`, `ls` and friends)
* Runtime invocation * Runtime invocation
* Command shell integration * Command shell integration
@ -17,7 +17,7 @@ these include:
* Exotic object support (BasicObject instances, IClasses, ...) * Exotic object support (BasicObject instances, IClasses, ...)
* A Powerful and flexible command system * A Powerful and flexible command system
* Ability to view and replay history * Ability to view and replay history
* Many convenience commands inspired by IPython and SLIME * Many convenience commands inspired by IPython and other advanced REPLs
Pry is also fairly flexible and allows significant user Pry is also fairly flexible and allows significant user
@ -46,81 +46,29 @@ Pry, then:
2. Run the test: `gem test pry` 2. Run the test: `gem test pry`
3. Finally choose 'Yes' to upload the results. 3. Finally choose 'Yes' to upload the results.
Example: Interacting with an object at runtime Example: Navigating around state
--------------------------------------- ---------------------------------------
With the `Object#pry` method we can pry (open an irb-like session) on Pry allows us to pop in and out of different scopes (objects) using
an object. In the example below we open a Pry session for the `Test` class and execute a method and add the `cd` command. To view what variables and methods are available
an instance variable. The current thread is taken over by the Pry REPL loop for the duration of the session. within a particular scope we use the versatile `ls` command.
require 'pry'
class Test
def self.hello() "hello world" end
end
Test.pry
# Pry session begins on stdin
Beginning Pry session for Test
pry(Test)> self
=> Test
pry(Test)> hello
=> "hello world"
pry(Test)> @y = 20
=> 20
pry(Test)> exit
Ending Pry session for Test
# program resumes here
If we now inspect the `Test` object we can see our changes have had
effect:
Test.instance_variable_get(:@y) #=> 20
### Alternative Syntax
You can also use the `Pry.start(obj)` or `pry(obj)` syntax to start a pry session on
`obj`. e.g
Pry.start(5)
Beginning Pry session for 5
pry(5)>
OR
pry(6)
beginning Pry session for 6
pry(6)>
Example: Pry sessions can nest
-----------------------------------------------
Here we will begin Pry at top-level, then pry on a class and then on Here we will begin Pry at top-level, then pry on a class and then on
an instance variable inside that class: an instance variable inside that class:
# Pry.start() without parameters begins a Pry session on top-level (main)
Pry.start
Beginning Pry session for main
pry(main)> class Hello pry(main)> class Hello
pry(main)* @x = 20 pry(main)* @x = 20
pry(main)* end pry(main)* end
=> 20 => 20
pry(main)> cd Hello pry(main)> cd Hello
Beginning Pry session for Hello pry(Hello):1> ls -i
pry(Hello):1> instance_variables
=> [:@x] => [:@x]
pry(Hello):1> cd @x pry(Hello):1> cd @x
Beginning Pry session for 20
pry(20:2)> self + 10 pry(20:2)> self + 10
=> 30 => 30
pry(20:2)> cd .. pry(20:2)> cd ..
Ending Pry session for 20
pry(Hello):1> cd .. pry(Hello):1> cd ..
Ending Pry session for Hello
pry(main)> cd .. pry(main)> cd ..
Ending Pry session for main
The number after the `:` in the pry prompt indicates the nesting The number after the `:` in the pry prompt indicates the nesting
level. To display more information about nesting, use the `nesting` level. To display more information about nesting, use the `nesting`
@ -143,21 +91,6 @@ the `jump-to` command:
=> 100 => 100
pry(Hello):1> pry(Hello):1>
If we just want to go back one level of nesting we can of course
use the `quit` or `exit` or `back` commands.
To break out of all levels of Pry nesting and return immediately to the
calling process use `exit-all`:
pry("friend":3)> exit-all
Ending Pry session for "friend"
Ending Pry session for 100
Ending Pry session for Hello
Ending Pry session for main
=> main
# program resumes here
Features and limitations Features and limitations
------------------------ ------------------------