updated readme
This commit is contained in:
parent
fd007cb37d
commit
6d7cb1f11b
|
@ -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
|
||||||
------------------------
|
------------------------
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue