irb/inspector.rb - inspect methods
$Release Version: 0.9.6$ $Revision: 1.19 $ $Date: 2002/06/11 07:51:31 $ by Keiju ISHITSUKA(keiju@ruby-lang.org)
–
loader.rb -
$Release Version: 0.9.6$ $Revision$ by Keiju ISHITSUKA(keiju@ruby-lang.org)
–
history.rb -
$Release Version: 0.9.6$ $Revision$ by Keiju ISHITSUKA(keiju@ruby-lang.org)
–
push-ws.rb -
$Release Version: 0.9.6$ $Revision$ by Keiju ISHITSUKA(keiju@ruby-lang.org)
–
irb/ext/cb.rb -
$Release Version: 0.9.6$ $Revision$ by Keiju ISHITSUKA(keiju@ruby-lang.org)
–
irb/extend-command.rb - irb extend command
$Release Version: 0.9.6$ $Revision$ by Keiju ISHITSUKA(keiju@ruby-lang.org)
–
irb/init.rb - irb initialize module
$Release Version: 0.9.6$ $Revision$ by Keiju ISHITSUKA(keiju@ruby-lang.org)
–
irb/version.rb - irb version definition file
$Release Version: 0.9.6$ $Revision$ by Keiju ISHITSUKA(keiju@ishitsuka.com)
–
irb/locale.rb - internationalization module
$Release Version: 0.9.6$ $Revision$ by Keiju ISHITSUKA(keiju@ruby-lang.org)
–
irb/workspace-binding.rb -
$Release Version: 0.9.6$ $Revision$ by Keiju ISHITSUKA(keiju@ruby-lang.org)
–
IRB stands for “interactive Ruby” and is a tool to interactively execute Ruby expressions read from the standard input.
The irb command from your shell will start the interpreter.
Usage
Use of irb is easy if you know Ruby.
When executing irb, prompts are displayed as follows. Then, enter the Ruby expression. An input is executed when it is syntactically complete.
$ irb irb(main):001:0> 1+2 #=> 3 irb(main):002:0> class Foo irb(main):003:1> def foo irb(main):004:2> print 1 irb(main):005:2> end irb(main):006:1> end #=> nil
The Readline extension module can be used with irb. Use of Readline is default if it’s installed.
Command line options
Usage: irb.rb [options] [programfile] [arguments]
-f Suppress read of ~/.irbrc -m Bc mode (load mathn, fraction or matrix are available) -d Set $DEBUG to true (same as `ruby -d') -r load-module Same as `ruby -r' -I path Specify $LOAD_PATH directory -U Same as `ruby -U` -E enc Same as `ruby -E` -w Same as `ruby -w` -W[level=2] Same as `ruby -W` --inspect Use `inspect' for output (default except for bc mode) --noinspect Don't use inspect for output --readline Use Readline extension module --noreadline Don't use Readline extension module --prompt prompt-mode --prompt-mode prompt-mode Switch prompt mode. Pre-defined prompt modes are `default', `simple', `xmp' and `inf-ruby' --inf-ruby-mode Use prompt appropriate for inf-ruby-mode on emacs. Suppresses --readline. --simple-prompt Simple prompt mode --noprompt No prompt mode --tracer Display trace for each execution of commands. --back-trace-limit n Display backtrace top n and tail n. The default value is 16. --irb_debug n Set internal debug level to n (not for popular use) -v, --version Print the version of irb
Configuration
IRB reads from ~/.irbrc when it’s invoked.
If ~/.irbrc doesn’t exist, irb will try to read in the following order:
-
.irbrc
-
irb.rc
-
_irbrc
-
$irbrc
The following are alternatives to the command line options. To use them type as follows in an irb session:
IRB.conf[:IRB_NAME]="irb" IRB.conf[:MATH_MODE]=false IRB.conf[:INSPECT_MODE]=nil IRB.conf[:IRB_RC] = nil IRB.conf[:BACK_TRACE_LIMIT]=16 IRB.conf[:USE_LOADER] = false IRB.conf[:USE_READLINE] = nil IRB.conf[:USE_TRACER] = false IRB.conf[:IGNORE_SIGINT] = true IRB.conf[:IGNORE_EOF] = false IRB.conf[:PROMPT_MODE] = :DEFAULT IRB.conf[:PROMPT] = {...} IRB.conf[:DEBUG_LEVEL]=0
Auto indentation
To enable auto-indent mode in irb, add the following to your .irbrc:
IRB.conf[:AUTO_INDENT] = true
Autocompletion
To enable autocompletion for irb, add the following to your .irbrc:
require 'irb/completion'
History
By default, irb disables history and will not store any commands you used.
If you want to enable history, add the following to your .irbrc:
IRB.conf[:SAVE_HISTORY] = 1000
This will now store the last 1000 commands in ~/.irb_history.
See IRB::Context#save_history= for more information.
Customizing the IRB Prompt
In order to customize the prompt, you can change the following Hash:
IRB.conf[:PROMPT]
This example can be used in your .irbrc
IRB.conf[:PROMPT][:MY_PROMPT] = { # name of prompt mode :AUTO_INDENT => true # enables auto-indent mode :PROMPT_I => nil, # normal prompt :PROMPT_S => nil, # prompt for continuated strings :PROMPT_C => nil, # prompt for continuated statement :RETURN => " ==>%s\n" # format to return value } IRB.conf[:PROMPT_MODE] = :MY_PROMPT
Or, invoke irb with the above prompt mode by:
irb --prompt my-prompt
Constants PROMPT_I, PROMPT_S and PROMPT_C specify the format. In the prompt specification, some special strings are available:
%N # command name which is running %m # to_s of main object (self) %M # inspect of main object (self) %l # type of string(", ', /, ]), `]' is inner %w[...] %NNi # indent level. NN is degits and means as same as printf("%NNd"). # It can be ommited %NNn # line number. %% # %
For instance, the default prompt mode is defined as follows:
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" # used to printf }
irb comes with a number of available modes:
# :NULL: # :PROMPT_I: # :PROMPT_N: # :PROMPT_S: # :PROMPT_C: # :RETURN: | # %s # :DEFAULT: # :PROMPT_I: ! ‘%N(%m):%03n:%i> ’ # :PROMPT_N: ! ‘%N(%m):%03n:%i> ’ # :PROMPT_S: ! ‘%N(%m):%03n:%i%l ’ # :PROMPT_C: ! ‘%N(%m):%03n:%i* ’ # :RETURN: | # => %s # :CLASSIC: # :PROMPT_I: ! ‘%N(%m):%03n:%i> ’ # :PROMPT_N: ! ‘%N(%m):%03n:%i> ’ # :PROMPT_S: ! ‘%N(%m):%03n:%i%l ’ # :PROMPT_C: ! ‘%N(%m):%03n:%i* ’ # :RETURN: | # %s # :SIMPLE: # :PROMPT_I: ! ‘>> ’ # :PROMPT_N: ! ‘>> ’ # :PROMPT_S: # :PROMPT_C: ! ‘?> ’ # :RETURN: | # => %s # :INF_RUBY: # :PROMPT_I: ! ‘%N(%m):%03n:%i> ’ # :PROMPT_N: # :PROMPT_S: # :PROMPT_C: # :RETURN: | # %s # :AUTO_INDENT: true # :XMP: # :PROMPT_I: # :PROMPT_N: # :PROMPT_S: # :PROMPT_C: # :RETURN: |2 # ==>%s
Restrictions
Because irb evaluates input immediately after it is syntactically complete, the results may be slightly different than directly using Ruby.
IRB Sessions
IRB has a special feature, that allows you to manage many sessions at once.
You can create new sessions with Irb.irb, and get a list of current sessions with the jobs command in the prompt.
Commands
JobManager provides commands to handle the current sessions:
jobs # List of current sessions fg # Switches to the session of the given number kill # Kills the session with the given number
The exit command, or ::irb_exit, will quit the current session and call any exit hooks with IRB.irb_at_exit.
A few commands for loading files within the session are also available:
source |
Loads a given file in the current session and displays the source lines, see IrbLoader#source_file
|
Constants
STDIN_FILE_NAME = "(line)"
DefaultEncodings = Struct.new(:external, :internal)
IRBRC_EXT = "rc"
FEATURE_IOPT_CHANGE_VERSION = "1.9.0"