| 
 | |||
| 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/nil| true | 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/nil| true | 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_sof the main object (self). | |||||||
| %M | inspectof the main object (self). | |||||||
| %l | Delimiter type. In strings that are continued across a line break, %lwill 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 Bindingfor the nth context from the top. The 0th context is
  topmost,
  most recent frame. | |||||||
| IRB::Frame.bottom(n = 0) | Returns a Bindingfor 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 > |