| |||
| Previous < | Contents ^ | Next > | |
irb is run from the command line.
irb [irb-options] [ruby_script] [options] |
irb command-line options
| |||||||||||||||||||||||||||||||||||||||||||||
~/.irbrc, .irbrc, irb.rc,
_irbrc, and $irbrc.
Within the initialization file you may run any arbitrary Ruby code.
You can also set any of the configuration values that correspond to
command-line arguments as shown in Table B.2 on page 524.
irb configuration values
| ||||||||||||||||||||||||||||||||||||
IRB.conf[:IRB_RC] to a Proc object. This proc will be
invoked whenever the irb context is changed, and will receive that new
context as a parameter. You can use this facility to change the
configuration dynamically based on the context.
exit, quit, irb_exitcb to change bindings (see below), exits from
this binding mode.
conf, irb_contextconf.
conf.back_trace_limit nconf.debug_level = Nconf.ignore_eof = true/falseconf.ignore_sigint= true/falseconf.inf_ruby_mode = true/falsetrue, changes the prompt and disables readline support,
allowing irb to work with
inf-ruby-mode. [inf-ruby-mode allows Emacs
users to interact with
Ruby while editing programs. See the file inf_ruby.el in the
misc directory of the distribution for more details.] The
default value is false.
conf.inspect_mode = true/false/niltrue |
Display inspect (default). |
false |
Display to_s. |
nil |
Inspect mode in non-math mode, non-inspect mode in math mode. |
conf.irb_levelcb).
conf.math_modeconf.use_loader = true/falseload/require.
conf.prompt_cconf.prompt_iconf.prompt_sconf.rc = true/false~/.irbrc.
conf.use_prompt = true/falseconf.use_readline = true/false/niltrue |
Use Readline. |
false |
Do not use Readline. |
nil |
Use Readline except for inf-ruby-mode (default). |
conf.verbose=true/falsecb, irb_change_binding [obj]irb [obj]jobs, irb_jobsfg n, irb_fg n| irb subsession number |
| thread id |
| irb object |
| self (the obj that launched a particular subsession) |
kill n, irb_kill nirb_fg.
IRB.conf[:PROMPT] |
.irbrc file):
IRB.conf[:PROMPT][:MY_PROMPT] = { # name of prompt mode
:PROMPT_I => "...", # normal prompt
:PROMPT_S => "...", # prompt for continuing strings
:PROMPT_C => "...", # prompt for continuing statement
:RETURN => " ==>%s\n" # format to return value
}
|
% irb --prompt my-prompt
Or set the following configuration value:
IRB.conf[:PROMPT_MODE] = :MY_PROMPT |
PROMPT_I, PROMPT_S, and PROMPT_C
specify the format for each of the prompt strings. Within the prompt
format, the following flags are available and will expand to the
given text:
| Flag | Description | |||||||
%N |
Current command. | |||||||
%m |
to_s of the main object (self). |
|||||||
%M |
inspect of the main object (self). |
|||||||
%l |
Delimiter type. In strings that are continued across a line break,
%l will display the type of delimiter used to begin the
string, so you'll know how to end it. The delimiter will be
one of ", ', /, ], or `. |
|||||||
%ni |
Indent level. The optional number n is used as a width
specification to printf, as printf("%nd"). |
|||||||
%nn |
Current line number (n used as with the indent level). | |||||||
%% |
A literal percent sign. | |||||||
IRB.conf[:PROMPT_MODE][:DEFAULT] = {
:PROMPT_I => "%N(%m):%03n:%i> ",
:PROMPT_S => "%N(%m):%03n:%i%l ",
:PROMPT_C => "%N(%m):%03n:%i* ",
:RETURN => "%s\n"
}
|
eval "a = 0" a |
prog.rb:2: undefined local variable or method `a' |
irb(main):001:0> eval "a = 0" 0 irb(main):002:0> a 0In irb, the assignment was executed before the second line was encountered, so ``a'' is correctly identified as a local variable. If you need to match the Ruby behavior more closely, you can place these statements within a
begin/end pair.
irb(main):001:0> begin irb(main):002:1* eval "a = 0" irb(main):003:1> a irb(main):004:1> end NameError: undefined local variable or method `a' (irb):3:in `irb_binding'
rtags is a command used to create a TAGS file for use with
either the emacs or vi editor.
rtags [-vi] [files]... |
TAGS file suitable for emacs (see
etags.el). The -vi option makes a TAGS file for use with vi.
rtags needs to be installed in the same manner as irb (that is, you
need to install irb in the library path and make a link from
irb/rtags.rb to bin/rtags).
require "irb/xmp" xmp <<END artist = "Doc Severinsen" artist END |
artist = "Doc Severinsen" ==>"Doc Severinsen" artist ==>"Doc Severinsen" |
require "irb/xmp" x = XMP.new x.puts <<END artist = "Louis Prima" END x.puts <<END artist END |
artist = "Louis Prima" ==>"Louis Prima" artist ==>"Louis Prima" |
xmp code_string, abinding XMP.new(abinding) |
IRB::Frame class represents the interpreter's stack and allows
easy access to the Binding environment in effect at different
stack levels.
IRB::Frame.top(n = 0) |
Returns a Binding
for the nth context from the top. The 0th context is
topmost,
most recent frame. |
|||||||
IRB::Frame.bottom(n = 0) |
Returns a Binding for the
nth context from the bottom. The 0th context is the
bottommost, initial frame. |
|||||||
IRB::Frame.sender |
Returns the object (the sender) that invoked the current method. | |||||||
require 'irb/frame' def outie b = IRB::Frame.top(1) eval "p my_local", b end def innie my_local = 102.7 outie end innie |
102.7 |
| Previous < | Contents ^ | Next > |