pry 0.4.5 → 0.4.6
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/README.markdown +21 -3
- data/examples/example_command_override.rb +1 -1
- data/lib/pry/command_base.rb +2 -0
- data/lib/pry/commands.rb +12 -2
- data/lib/pry/pry_instance.rb +5 -6
- data/lib/pry/version.rb +1 -1
- metadata +9 -3
data/README.markdown
CHANGED
@@ -16,9 +16,10 @@ It is not based on the IRB codebase, and implements some unique REPL
|
|
16
16
|
commands such as `show_method` and `show_doc`
|
17
17
|
|
18
18
|
Pry is also fairly flexible and allows significant user
|
19
|
-
customization. It
|
20
|
-
object that has a `readline` method and write to any object that has a
|
21
|
-
`puts` method - many other aspects of Pry are also configurable
|
19
|
+
[customization](http://rdoc.info/github/banister/pry/master/file/wiki/Customizing-pry.md). It
|
20
|
+
is trivial to set it to read from any object that has a `readline` method and write to any object that has a
|
21
|
+
`puts` method - many other aspects of Pry are also configurable making
|
22
|
+
it a good choice for implementing custom shells.
|
22
23
|
|
23
24
|
* Install the [gem](https://rubygems.org/gems/pry): `gem install pry`
|
24
25
|
* Read the [documentation](http://rdoc.info/github/banister/pry/master/file/README.markdown)
|
@@ -262,6 +263,23 @@ If you want to access a method of the same name, prefix the invocation by whites
|
|
262
263
|
current one with `obj` as the receiver of the new session. Very useful
|
263
264
|
when exploring large or complicated runtime state.
|
264
265
|
|
266
|
+
Bindings and objects
|
267
|
+
--------------------
|
268
|
+
|
269
|
+
Pry ultimately operates on `Binding` objects. If you invoke Pry with a
|
270
|
+
Binding object it uses that Binding. If you invoke Pry with anything
|
271
|
+
other than a `Binding`, Pry will generate a Binding for that
|
272
|
+
object and use that.
|
273
|
+
|
274
|
+
If you want to open a Pry session on the current context and capture
|
275
|
+
the locals you should use: `binding.pry`. If you do not care about
|
276
|
+
capturing the locals you can simply use `pry` (which will generate a
|
277
|
+
fresh `Binding` for the receiver).
|
278
|
+
|
279
|
+
Top-level is a special case; you can start a Pry session on top-level
|
280
|
+
*and* capture locals by simply using: `pry`. This is because Pry
|
281
|
+
automatically uses `TOPLEVEL_BINDING` for the top-level object (main).
|
282
|
+
|
265
283
|
Example Programs
|
266
284
|
----------------
|
267
285
|
|
@@ -16,7 +16,7 @@ class MyCommands < Pry::CommandBase
|
|
16
16
|
# bring in just the status command from Pry::Commands
|
17
17
|
import_from Pry::Commands, "status"
|
18
18
|
|
19
|
-
#
|
19
|
+
# analogy to Ruby's native alias_method idiom for decorating a method
|
20
20
|
alias_command "old_status", "status", ""
|
21
21
|
|
22
22
|
# Invoke one command from within another using `run`
|
data/lib/pry/command_base.rb
CHANGED
@@ -87,9 +87,11 @@ class Pry
|
|
87
87
|
# Create an alias for a command.
|
88
88
|
# @param [String] new_command The alias name.
|
89
89
|
# @param [String] orig_command The original command name.
|
90
|
+
# @param [String] desc The optional description.
|
90
91
|
# @example
|
91
92
|
# class MyCommands < Pry::CommandBase
|
92
93
|
# alias_command "help_alias", "help"
|
94
|
+
# end
|
93
95
|
def alias_command(new_command_name, orig_command_name, desc=nil)
|
94
96
|
commands[new_command_name] = commands[orig_command_name].dup
|
95
97
|
commands[new_command_name][:description] = desc if desc
|
data/lib/pry/commands.rb
CHANGED
@@ -51,8 +51,18 @@ class Pry
|
|
51
51
|
throw(:breakout, 0)
|
52
52
|
end
|
53
53
|
|
54
|
-
command "ls", "Show the list of vars in the current scope." do
|
55
|
-
|
54
|
+
command "ls", "Show the list of vars in the current scope. Use -c to include constants." do |arg|
|
55
|
+
with_constants = (arg == "-c")
|
56
|
+
target_self = target.eval('self')
|
57
|
+
|
58
|
+
case target_self
|
59
|
+
when Module
|
60
|
+
c = with_constants ? target_self.constants : []
|
61
|
+
output.puts "#{Pry.view(target.eval("local_variables + instance_variables + #{c}"))}"
|
62
|
+
else
|
63
|
+
c = with_constants ? target_self.class.constants : []
|
64
|
+
output.puts "#{Pry.view(target.eval("local_variables + instance_variables + #{c}"))}"
|
65
|
+
end
|
56
66
|
end
|
57
67
|
|
58
68
|
command "cat", "Show output of <var>.inspect." do |obj|
|
data/lib/pry/pry_instance.rb
CHANGED
@@ -3,10 +3,10 @@ require 'readline'
|
|
3
3
|
class Pry
|
4
4
|
|
5
5
|
# The list of configuration options.
|
6
|
-
|
6
|
+
CONFIG_OPTIONS = [:input, :output, :commands, :print,
|
7
7
|
:prompt, :hooks]
|
8
8
|
|
9
|
-
attr_accessor *
|
9
|
+
attr_accessor *CONFIG_OPTIONS
|
10
10
|
|
11
11
|
# Create a new `Pry` object.
|
12
12
|
# @param [Hash] options The optional configuration parameters.
|
@@ -21,12 +21,11 @@ class Pry
|
|
21
21
|
# component of the REPL. (see print.rb)
|
22
22
|
def initialize(options={})
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
default_options = h
|
24
|
+
default_options = {}
|
25
|
+
CONFIG_OPTIONS.each { |v| default_options[v] = Pry.send(v) }
|
27
26
|
default_options.merge!(options)
|
28
27
|
|
29
|
-
|
28
|
+
CONFIG_OPTIONS.each do |key|
|
30
29
|
instance_variable_set("@#{key}", default_options[key])
|
31
30
|
end
|
32
31
|
end
|
data/lib/pry/version.rb
CHANGED
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
+
hash: 3
|
4
5
|
prerelease: false
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 4
|
8
|
-
-
|
9
|
-
version: 0.4.
|
9
|
+
- 6
|
10
|
+
version: 0.4.6
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- John Mair (banisterfiend)
|
@@ -14,7 +15,7 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date: 2011-
|
18
|
+
date: 2011-02-02 00:00:00 +13:00
|
18
19
|
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
@@ -25,6 +26,7 @@ dependencies:
|
|
25
26
|
requirements:
|
26
27
|
- - ">="
|
27
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 5
|
28
30
|
segments:
|
29
31
|
- 2
|
30
32
|
- 0
|
@@ -40,6 +42,7 @@ dependencies:
|
|
40
42
|
requirements:
|
41
43
|
- - ">="
|
42
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 23
|
43
46
|
segments:
|
44
47
|
- 0
|
45
48
|
- 2
|
@@ -55,6 +58,7 @@ dependencies:
|
|
55
58
|
requirements:
|
56
59
|
- - ">="
|
57
60
|
- !ruby/object:Gem::Version
|
61
|
+
hash: 19
|
58
62
|
segments:
|
59
63
|
- 1
|
60
64
|
- 1
|
@@ -112,6 +116,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
112
116
|
requirements:
|
113
117
|
- - ">="
|
114
118
|
- !ruby/object:Gem::Version
|
119
|
+
hash: 3
|
115
120
|
segments:
|
116
121
|
- 0
|
117
122
|
version: "0"
|
@@ -120,6 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
120
125
|
requirements:
|
121
126
|
- - ">="
|
122
127
|
- !ruby/object:Gem::Version
|
128
|
+
hash: 3
|
123
129
|
segments:
|
124
130
|
- 0
|
125
131
|
version: "0"
|