489 lines
11 KiB
Groff
489 lines
11 KiB
Groff
|
.\" DO NOT MODIFY THIS FILE! it was generated by rd2
|
||
|
.TH irb-beta 1 "May 2001"
|
||
|
.SH What is irb?
|
||
|
.PP
|
||
|
irb stands for `interactive ruby'. irb is a tool to execute interactively
|
||
|
ruby expressions read from stdin.
|
||
|
.SH Invoking
|
||
|
.PP
|
||
|
.nf
|
||
|
\& % ruby \-r irb \-e0
|
||
|
\& % irb
|
||
|
.fi
|
||
|
Either of the aboves. In the former style, options can be specified
|
||
|
as follows:
|
||
|
.nf
|
||
|
\& % ruby \-r irb \-e0 \-\- \-v
|
||
|
.fi
|
||
|
.SH Usage
|
||
|
.PP
|
||
|
Use of irb is easy if you know ruby. Executing irb, prompts are
|
||
|
displayed as follows. Then, enter expression of ruby. A input is
|
||
|
executed when it is syntacticaly completed.
|
||
|
.nf
|
||
|
\& dim% 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
|
||
|
\& irb(main):007:0>
|
||
|
.fi
|
||
|
And, Readline extesion module can be used with irb. Using Readline
|
||
|
is the standard default action if Readline is installed.
|
||
|
.SH Command line option
|
||
|
.PP
|
||
|
.nf
|
||
|
\& irb.rb [options] file_name opts
|
||
|
\& options:
|
||
|
\& \-f suppress read ~/.irbrc
|
||
|
\& \-m bc mode (fraction or matrix are available)
|
||
|
\& \-d set $DEBUG to true (same as `ruby \-d')
|
||
|
\& \-r load\-module same as `ruby \-r'
|
||
|
\& \-\-inspect uses `inspect' for output (the default except bc mode)
|
||
|
\& \-\-noinspect doesn't uses inspect for output
|
||
|
\& \-\-readline uses Readline extension module
|
||
|
\& \-\-noreadline doesn't use Readline extension module
|
||
|
\& \-\-prompt prompt\-mode
|
||
|
\& \-\-prompt\-mode prompt\-mode
|
||
|
.fi
|
||
|
.nf
|
||
|
\& switches prompt mode. Pre\-defined prompt modes are
|
||
|
\& `defalut', `simple', `xmp' and `inf\-ruby'
|
||
|
.fi
|
||
|
.nf
|
||
|
\& \-\-inf\-ruby\-mode uses prompt appreciate for inf\-ruby\-mode on emacs.
|
||
|
.fi
|
||
|
.nf
|
||
|
\& Suppresses \-\-readline.
|
||
|
.fi
|
||
|
.nf
|
||
|
\& \-\-simple\-prompt simple prompt mode
|
||
|
\& \-\-noprompt no prompt
|
||
|
\& \-\-tracer display trace for each execution of commands.
|
||
|
\& \-\-back\-trace\-limit n
|
||
|
.fi
|
||
|
.nf
|
||
|
\& displayes backtrace top n and tail n. The default
|
||
|
\& value is 16.
|
||
|
.fi
|
||
|
.nf
|
||
|
\& \-\-irb_debug n sets internal debug level to n (It shouldn't be used)
|
||
|
\& \-v, \-\-version prints the version of irb
|
||
|
.fi
|
||
|
.SH Configurations
|
||
|
.PP
|
||
|
irb reads `~/.irbrc' when it is invoked. If `~/.irbrb' doesn't exist
|
||
|
irb try to read in the order `.irbrc', `irb.rc', `_irbrc' then `$irbrc'.
|
||
|
The following is altanative to the command line option. To use them
|
||
|
type as follows in an irb session.
|
||
|
.nf
|
||
|
\& IRB.conf[:IRB_NAME]="irb"
|
||
|
\& IRB.conf[:MATH_MODE]=false
|
||
|
\& IRB.conf[:USE_TRACER]=false
|
||
|
\& IRB.conf[:USE_LOADER]=false
|
||
|
\& IRB.conf[:IGNORE_SIGINT]=true
|
||
|
\& IRB.conf[:IGNORE_EOF]=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] = :DEFALUT
|
||
|
\& IRB.conf[:PROMPT] = {...}
|
||
|
\& IRB.conf[:DEBUG_LEVEL]=0
|
||
|
\& IRB.conf[:VERBOSE]=true
|
||
|
.fi
|
||
|
.SH Customizing prompt
|
||
|
.PP
|
||
|
To costomize the prompt you set a variable
|
||
|
.nf
|
||
|
\& IRB.conf[:PROMPT]
|
||
|
.fi
|
||
|
For example, describe as follows in `.irbrc'.
|
||
|
.nf
|
||
|
\& IRB.conf[:PROMPT][:MY_PROMPT] = { # name of prompt 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
|
||
|
\& }
|
||
|
.fi
|
||
|
Then, invoke irb with the above prompt mode by
|
||
|
.nf
|
||
|
\& % irb \-\-prompt my\-prompt
|
||
|
.fi
|
||
|
Or add the following in `.irbrc'.
|
||
|
.nf
|
||
|
\& IRB.conf[:PROMPT_MODE] = :MY_PROMPT
|
||
|
.fi
|
||
|
Constants PROMPT_I, PROMPT_S and PROMPT_C specifies the format.
|
||
|
In the prompt specification, some special strings are available.
|
||
|
.nf
|
||
|
\& %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.
|
||
|
\& %% %
|
||
|
.fi
|
||
|
For instance, the default prompt mode is defined as follows:
|
||
|
IRB.conf[:PROMPT_MODE][:DEFAULT] = {
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
PROMPT_I => "%N(%m):%03n:%i> ",
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
PROMPT_S => "%N(%m):%03n:%i%l ",
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
PROMPT_C => "%N(%m):%03n:%i* ",
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
RETURN => "%s\\n"
|
||
|
}
|
||
|
RETURN is used to printf.
|
||
|
.SH Configurating subirb
|
||
|
.PP
|
||
|
The command line option or IRB.conf specify the default behavior of
|
||
|
(sub)irb. On the other hand, each conf of in the next sction `6. Command'
|
||
|
is used to individually configurate (sub)irb.
|
||
|
If proc is set to IRB.conf[:IRB_RC], its subirb will be invoked after
|
||
|
execution of that proc under giving the context of irb as its
|
||
|
aregument. By this mechanism each subirb can be configurated.
|
||
|
.SH Command
|
||
|
.PP
|
||
|
For irb commands, both simple name and `irb_'\-prefixed name are prepared.
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
exit, quit, irb_exit
|
||
|
Quits (sub)irb.
|
||
|
if you've done cb (see below), exit from the binding mode.
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
conf, irb_context
|
||
|
Displays current configuration. Modifing the configuration is
|
||
|
achieved by sending message to `conf'.
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
conf.back_trace_limit
|
||
|
Sets display lines of backtrace as top n and tail n.
|
||
|
The default value is 16.
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
conf.debug_level = N
|
||
|
Sets debug level of irb.
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
conf.ignore_eof = true/false
|
||
|
Whether ^D (control\-d) will be ignored or not.
|
||
|
If false is set, ^D means quit.
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
conf.ignore_sigint= true/false
|
||
|
Whether ^C (control\-c) will be ignored or not.
|
||
|
If false is set, ^D means quit. If true,
|
||
|
|
||
|
.nf
|
||
|
\& during input: cancel inputing then return to top level.
|
||
|
\& during execute: abondon current execution.
|
||
|
.fi
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
conf.inf_ruby_mode = true/false
|
||
|
Whether inf\-ruby\-mode or not. The default value is false.
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
conf.inspect_mode = true/false/nil
|
||
|
Specifies inspect mode.
|
||
|
true: display inspect
|
||
|
false: display to_s
|
||
|
nil: inspect mode in non math mode,
|
||
|
|
||
|
.nf
|
||
|
\& non inspect mode in math mode.
|
||
|
.fi
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
conf.irb_level
|
||
|
The level of cb.
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
conf.math_mode
|
||
|
Whether bc mode or not.
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
conf.use_loader = true/false
|
||
|
Whether irb's own file reader method is used when load/require or not.
|
||
|
This mode is globaly affected (irb wide).
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
conf.prompt_c
|
||
|
prompt for a continuating statement (e.g, immediately after of `if')
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
conf.prompt_i
|
||
|
standard prompt
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
conf.prompt_s
|
||
|
prompt for a continuating string
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
conf.rc
|
||
|
Whether ~/.irbrc is read or not.
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
conf.use_prompt = true/false
|
||
|
Prompting or not.
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
conf.use_readline = true/false/nil
|
||
|
Whether readline is used or not.
|
||
|
true: uses
|
||
|
false: doen't use
|
||
|
nil: intends to use readline except for inf\-reuby\-mode (default)
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
conf.verbose=T/F
|
||
|
Whether verbose messages are display or not.
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
cb, irb_change_binding [obj]
|
||
|
Enter new binding which has a distinct scope of local variables.
|
||
|
If obj is given, obj will be self.
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
irb [obj]
|
||
|
Invoke subirb. If obj is given, obj will be self.
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
jobs, irb_jobs
|
||
|
List of subirb
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
fg n, irb_fg n
|
||
|
Switch into specified subirb. The following is candidates of n:
|
||
|
|
||
|
.nf
|
||
|
\& irb number
|
||
|
\& thhread
|
||
|
\& irb object
|
||
|
\& self(obj which is specified of irb obj)
|
||
|
.fi
|
||
|
|
||
|
|
||
|
.TP
|
||
|
.fi
|
||
|
.B
|
||
|
kill n, irb_kill n
|
||
|
Kill subirb. The means of n is as same as the case of irb_fg.
|
||
|
.SH System variable
|
||
|
.PP
|
||
|
.nf
|
||
|
\& _ The latest value of evaluation (it is local)
|
||
|
.fi
|
||
|
.SH Session Example
|
||
|
.PP
|
||
|
.nf
|
||
|
\& dim% ruby irb.rb
|
||
|
\& irb(main):001:0> irb # invoke subirb
|
||
|
\& irb#1(main):001:0> jobs # list of subirbs
|
||
|
\& #0\->irb on main (#<Thread:0x400fb7e4> : stop)
|
||
|
\& #1\->irb#1 on main (#<Thread:0x40125d64> : running)
|
||
|
\& nil
|
||
|
\& irb#1(main):002:0> fg 0 # switch job
|
||
|
\& nil
|
||
|
\& irb(main):002:0> class Foo;end
|
||
|
\& nil
|
||
|
\& irb(main):003:0> irb Foo # invoke subirb which has the
|
||
|
.fi
|
||
|
.nf
|
||
|
\& # context of Foo
|
||
|
.fi
|
||
|
.nf
|
||
|
\& irb#2(Foo):001:0> def foo # define Foo#foo
|
||
|
\& irb#2(Foo):002:1> print 1
|
||
|
\& irb#2(Foo):003:1> end
|
||
|
\& nil
|
||
|
\& irb#2(Foo):004:0> fg 0 # switch job
|
||
|
\& nil
|
||
|
\& irb(main):004:0> jobs # list of job
|
||
|
\& #0\->irb on main (#<Thread:0x400fb7e4> : running)
|
||
|
\& #1\->irb#1 on main (#<Thread:0x40125d64> : stop)
|
||
|
\& #2\->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
|
||
|
\& nil
|
||
|
\& irb(main):005:0> Foo.instance_methods # Foo#foo is defined asurely
|
||
|
\& ["foo"]
|
||
|
\& irb(main):006:0> fg 2 # switch job
|
||
|
\& nil
|
||
|
\& irb#2(Foo):005:0> def bar # define Foo#bar
|
||
|
\& irb#2(Foo):006:1> print "bar"
|
||
|
\& irb#2(Foo):007:1> end
|
||
|
\& nil
|
||
|
\& irb#2(Foo):010:0> Foo.instance_methods
|
||
|
\& ["bar", "foo"]
|
||
|
\& irb#2(Foo):011:0> fg 0
|
||
|
\& nil
|
||
|
\& irb(main):007:0> f = Foo.new
|
||
|
\& #<Foo:0x4010af3c>
|
||
|
\& irb(main):008:0> irb f # invoke subirb which has the
|
||
|
.fi
|
||
|
.nf
|
||
|
\& # context of f (instance of Foo)
|
||
|
.fi
|
||
|
.nf
|
||
|
\& irb#3(#<Foo:0x4010af3c>):001:0> jobs
|
||
|
\& #0\->irb on main (#<Thread:0x400fb7e4> : stop)
|
||
|
\& #1\->irb#1 on main (#<Thread:0x40125d64> : stop)
|
||
|
\& #2\->irb#2 on Foo (#<Thread:0x4011d54c> : stop)
|
||
|
\& #3\->irb#3 on #<Foo:0x4010af3c> (#<Thread:0x4010a1e0> : running)
|
||
|
\& nil
|
||
|
\& irb#3(#<Foo:0x4010af3c>):002:0> foo # evaluate f.foo
|
||
|
\& 1nil
|
||
|
\& irb#3(#<Foo:0x4010af3c>):003:0> bar # evaluate f.bar
|
||
|
\& barnil
|
||
|
\& irb#3(#<Foo:0x4010af3c>):004:0> kill 1, 2, 3# kill job
|
||
|
\& nil
|
||
|
\& irb(main):009:0> jobs
|
||
|
\& #0\->irb on main (#<Thread:0x400fb7e4> : running)
|
||
|
\& nil
|
||
|
\& irb(main):010:0> exit # exit
|
||
|
\& dim%
|
||
|
.fi
|
||
|
.SH Restrictions
|
||
|
.PP
|
||
|
Because irb evaluates the inputs immediately after the imput is
|
||
|
syntactically completed, irb gives slight different result than
|
||
|
directly use ruby. Known difference is pointed out here.
|
||
|
.SH Declaration of the local variable
|
||
|
.PP
|
||
|
The following causes an error in ruby:
|
||
|
.nf
|
||
|
\& eval "foo = 0"
|
||
|
\& foo
|
||
|
\& \-\-
|
||
|
\& \-:2: undefined local variable or method `foo' for #<Object:0x40283118> (NameError)
|
||
|
\& \-\-\-
|
||
|
\& NameError
|
||
|
.fi
|
||
|
Though, the above will successfully done by irb.
|
||
|
.nf
|
||
|
\& >> eval "foo = 0"
|
||
|
.fi
|
||
|
.nf
|
||
|
\& => 0
|
||
|
\& >> foo
|
||
|
\& => 0
|
||
|
.fi
|
||
|
Ruby evaluates a code after reading entire of code and determination
|
||
|
of the scope of local variables. On the other hand, irb do
|
||
|
immediately. More precisely, irb evaluate at first
|
||
|
.nf
|
||
|
\& evel "foo = 0"
|
||
|
.fi
|
||
|
then foo is defined on this timing. It is because of this
|
||
|
incompatibility.
|
||
|
If you'd like to detect those differences, begin...end can be used:
|
||
|
.nf
|
||
|
\& >> begin
|
||
|
\& ?> eval "foo = 0"
|
||
|
\& >> foo
|
||
|
\& >> end
|
||
|
\& NameError: undefined local variable or method `foo' for #<Object:0x4013d0f0>
|
||
|
\& (irb):3
|
||
|
\& (irb_local_binding):1:in `eval'
|
||
|
.fi
|
||
|
.SH Here\-document
|
||
|
.PP
|
||
|
Implementation of Here\-document is incomplete.
|
||
|
.SH Symbol
|
||
|
.PP
|
||
|
Irb can not always recognize a symbol as to be Symbol. Concretely, an
|
||
|
expression have completed, however Irb regard it as continuation line.
|
||
|
|