Sophie

Sophie

distrib > CentOS > 6 > i386 > by-pkgid > a28c1d60d3683be735dfd702eff84942 > files > 631

ruby-docs-1.8.7.299-5.el6_0.1.i686.rpm

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html 
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>ruby-src:doc/irb/irb.rd.ja</title>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8" />
<link href="default.css" type="text/css" rel="stylesheet" />
<link href="refm507.html" rel="next" />
<link href="refm505.html" rel="prev" />
<link href="index.html" rel="start" />

</head>
<body>
<div class="navigator"><span class="navigator">[<a href="index.html">MAIN</a>][<a href="refm543.html">INDEX</a>]&nbsp;&nbsp;&nbsp;[<a href="index.html">TOP</a>][<a href="index.html">UP</a>][<a href="refm505.html">&lt;-PREV</a>][<a href="refm507.html">NEXT-&gt;</a>]</span></div>
<hr />

<h1><a name="L009981" id="L009981">irbとは?</a></h1>
<p>irbはinteractive rubyの略です. rubyの式を標準入力から簡単に入力/実行する
ためのツールです.</p>
<h1><a name="L009982" id="L009982">起動</a></h1>
<pre>% irb</pre>
<p>で行ないます. </p>
<h1><a name="L009983" id="L009983">使い方</a></h1>
<p>irbの使い方は, Rubyさえ知っていればいたって簡単です. 基本的には irb と
いうコマンドを実行するだけです. irbを実行すると, 以下のようなプロンプ
トが表れてきます. 後は, rubyの式を入れて下さい. 式が完結した時点で実行
されます.</p>
<pre>dim% irb
irb(main):001:0&gt; 1+2
3
irb(main):002:0&gt; class Foo
irb(main):003:1&gt;  def foo
irb(main):004:2&gt;    print 1
irb(main):005:2&gt;  end
irb(main):006:1&gt; end
nil
irb(main):007:0&gt; </pre>
<p>また, irbはReadlineモジュールにも対応しています. Readlineモジュールが
インストールされている時には, それを使うのが標準の動作になります.</p>
<h1><a name="L009984" id="L009984">コマンドオプション</a></h1>
<pre>irb.rb [options] file_name opts
options:
-f		    ~/.irbrc を読み込まない.
-m		    bcモード(分数, 行列の計算ができる)
-d                $DEBUG をtrueにする(ruby -d と同じ)
-Kc		    ruby -Kcと同じ
-r load-module    ruby -r と同じ.
--verbose	    これから実行する行を表示する(デフォルト)
--noverbose	    これから実行する行を表示しない
--echo	    実行結果を表示する(デフォルト)
--noecho	    実行結果を表示しない
--inspect	    結果出力にinspectを用いる(bcモード以外はデフォルト). 
--noinspect	    結果出力にinspectを用いない.
--readline	    readlineライブラリを利用する.
--noreadline	    readlineライブラリを利用しない. デフォルトの動作は,</pre>
<pre>inf-ruby-mode以外でreadlineライブラリを利用しよう
とする. </pre>
<pre>--prompt prompt-mode
--prompt-mode prompt-mode</pre>
<pre>プロンプトモードを切替えます. 現在定義されているプ
ロンプトモードは, default, simple, xmp, inf-rubyが
用意されています. デフォルトはdefaultプロンプトモー
ドになっています.</pre>
<pre>--inf-ruby-mode   emacsのinf-ruby-mode用のプロンプト表示を行なう. 特</pre>
<pre>に指定がない限り, readlineライブラリは使わなくなる.</pre>
<pre>--simple-prompt</pre>
<pre>非常にシンプルなプロンプトを用いるモードです.</pre>
<pre>--noprompt	    プロンプト表示を行なわない.
--tracer	    コマンド実行時にトレースを行なう.
--back-trace-limit n</pre>
<pre>バックトレース表示をバックトレースの頭から n, 後ろ
からnだけ行なう. デフォルトは16 </pre>
<pre>--irb_debug n	    irbのデバッグデバッグレベルをnに設定する(利用しな</pre>
<pre>い方が無難でしょう).</pre>
<pre>-v, --version	    irbのバージョンを表示する</pre>
<h1><a name="L009985" id="L009985">コンフィギュレーション</a></h1>
<p>irb起動時に``~/.irbrc''を読み込みます. もし存在しない場合は,
``.irbrc'', ``irb.rc'', ``_irbrc'', ``$irbrc''の順にloadを試みます.</p>
<p>オプションを設定する代わりに, 以下のコマンドでもデフォルトの動作を設定
できます.</p>
<pre>IRB.conf[:IRB_NAME]=&quot;irb&quot;
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</pre>
<h2><a name="L009986" id="L009986">プロンプトの設定</a></h2>
<p>プロンプトをカスタマイズしたい時には, </p>
<pre>IRB.conf[:PROMPT]</pre>
<p>を用います. 例えば, .irbrcの中で下のような式を記述します:</p>
<pre>IRB.conf[:PROMPT][:MY_PROMPT] = { # プロンプトモードの名前
  :PROMPT_I =&gt; nil,		  # 通常のプロンプト
  :PROMPT_S =&gt; nil,		  # 文字列などの継続行のプロンプト
  :PROMPT_C =&gt; nil,		  # 式が継続している時のプロンプト
  :RETURN =&gt; &quot;    ==&gt;%s\n&quot;	  # リターン時のプロンプト
}</pre>
<p>プロンプトモードを指定したい時には,</p>
<pre>irb --prompt my-prompt</pre>
<p>でそのプロンプトモードで起動されます. または, .irbrcに下式を記述しても
OKです.</p>
<pre>IRB.conf[:PROMPT_MODE] = :MY_PROMPT</pre>
<p>PROMPT_I, PROMPT_S, PROMPT_Cは, フォーマットを指定します.</p>
<pre>%N	起動しているコマンド名が出力される.
%m	mainオブジェクト(self)がto_sで出力される.
%M	mainオブジェクト(self)がinspectされて出力される.
%l	文字列中のタイプを表す(&quot;, ', /, ], `]'は%wの中の時)
%NNi	インデントのレベルを表す. NNは数字が入りprintfの%NNdと同じ. 省</pre>
<pre>略可能</pre>
<pre>%NNn	行番号を表します.
%%    %</pre>
<p>例えば, デフォルトのプロンプトモードは:</p>
<pre>IRB.conf[:PROMPT_MODE][:DEFAULT] = {
    :PROMPT_I =&gt; &quot;%N(%m):%03n:%i&gt; &quot;,
    :PROMPT_S =&gt; &quot;%N(%m):%03n:%i%l &quot;,
    :PROMPT_C =&gt; &quot;%N(%m):%03n:%i* &quot;,
    :RETURN =&gt; &quot;%s\n&quot;
} </pre>
<p>となっています.</p>
<p>RETURNは, 現在のところprintf形式です. 将来仕様が変わるかも知れません.</p>
<h2><a name="L009987" id="L009987">サブirbの設定</a></h2>
<p>コマンドラインオプションおよびIRB.confは(サブ)irb起動時のデフォルトの
設定を決めるもので, `5. コマンド'にあるconfで個別の(サブ)irbの設定がで
きるようになっています.</p>
<p>IRB.conf[:IRB_RC]にprocが設定されていると, サブirbを起動する時にその
procをirbのコンテキストを引数として呼び出します. これによって個別のサ
ブirbごとに設定を変えることができるようになります.</p>
<h1><a name="L009988" id="L009988">コマンド</a></h1>
<p>irb拡張コマンドは, 簡単な名前と頭に`irb_'をつけた名前と両方定義されて
います. これは, 簡単な名前がoverrideされた時のためです.</p>
<dl>
<dt><a name="L009989" id="L009989"><code>exit, <var>quit</var>, <var>irb_exit</var></code></a></dt>
<dd>
<p>終了する. 
サブirbの場合, そのサブirbを終了する.</p></dd>
<dt><a name="L009990" id="L009990"><code>conf, <var>irb_context</var></code></a></dt>
<dd>
<p>irbの現在の設定を表示する. 設定の変更は, confにメッセージを送るこ
とによって行なえる. </p></dd>
<dt><a name="L009991" id="L009991"><code>conf.eval_history = <var>N</var></code></a></dt>
<dd>
<p>実行結果のヒストリ機能の設定.
nnは整数かnilで nn&gt;0 であればその数だけヒストリにためる。nn==0の時は
無制限に記憶する、nilだとヒストリ機能はやめる(デフォルト). </p></dd>
<dt><a name="L009992" id="L009992"><code>Conf.back_trace_limit</code></a></dt>
<dd>
<p>バックトレース表示をバックトレースの頭からn, 後ろからnだけ行なう.
デフォルトは16</p></dd>
<dt><a name="L009993" id="L009993"><code>conf.debug_level = <var>N</var></code></a></dt>
<dd>
<p>irb用のデバッグレベルの設定</p></dd>
<dt><a name="L009994" id="L009994"><code>conf.ignore_eof = <var>true</var>/<var>false</var></code></a></dt>
<dd>
<p>^Dが入力された時の動作を設定する. trueの時は^Dを無視する, falseの
時はirbを終了する. </p></dd>
<dt><a name="L009995" id="L009995"><code>conf.ignore_sigint= <var>true</var>/<var>false</var></code></a></dt>
<dd>
<p>^Cが入力された時の動作を設定する. false時は, irbを終了する. trueの
時の動作は以下のようになる:</p>
<pre>入力中: これまで入力したものをキャンセルしトップレベルに戻る. 
実行中: 実行を中止する.</pre></dd>
<dt><a name="L009996" id="L009996"><code>conf.inf_ruby_mode = <var>true</var>/<var>false</var></code></a></dt>
<dd>
<p>inf-ruby-mode用のプロンプト表示を行なう. デフォルトはfalse.</p></dd>
<dt><a name="L009997" id="L009997"><code>conf.inspect_mode = <var>true</var>/<var>false</var>/<var>nil</var></code></a></dt>
<dd>
<p>インスペクトモードを設定する.
true: インスペクトして表示する.
false: 通常のprintで表示する.
nil: 通常モードであれば, inspect modeとなり, mathモードの時は, non</p></dd>
</dl>
<pre>inspect modeとなる.   </pre>
<dl>
<dt><a name="L009998" id="L009998"><code>conf.math_mode</code></a></dt>
<dd>
<p>参照のみ. bcモード(分数, 行列の計算ができます)かどうか?</p></dd>
<dt><a name="L009999" id="L009999"><code>conf.use_loader = <var>true</var>/<var>false</var></code></a></dt>
<dd>
<p>load/require時にirbのfile読み込み機能を用いるモードのスイッチ(デフォ
ルトは用いない). このモードはIRB全体に反映される.</p></dd>
<dt><a name="L010000" id="L010000"><code>conf.prompt_c</code></a></dt>
<dd>
<p>ifの直後など, 行が継続している時のプロンプト.</p></dd>
<dt><a name="L010001" id="L010001"><code>conf.prompt_i</code></a></dt>
<dd>
<p>通常のプロンプト.</p></dd>
<dt><a name="L010002" id="L010002"><code>conf.prompt_s</code></a></dt>
<dd>
<p>文字列中などを表すプロンプト.</p></dd>
<dt><a name="L010003" id="L010003"><code>conf.rc</code></a></dt>
<dd>
<p>~/.irbrcを読み込んだかどうか?</p></dd>
<dt><a name="L010004" id="L010004"><code>conf.use_prompt = <var>true</var>/<var>false</var></code></a></dt>
<dd>
<p>プロンプト表示するかどうか? デフォルトではプロンプトを表示する.</p></dd>
<dt><a name="L010005" id="L010005"><code>conf.use_readline = <var>true</var>/<var>false</var>/<var>nil</var></code></a></dt>
<dd>
<p>readlineを使うかどうか?
true: readlineを使う.
false: readlineを使わない.
nil: (デフォルト)inf-ruby-mode以外でreadlineライブラリを利用しよ</p>
<pre>うとする.  </pre></dd>
<dt><a name="L010006" id="L010006"><code>cws, <var>chws</var>, <var>irb_cws</var>, <var>irb_chws</var>, <var>irb_change_workspace</var> [<var>obj</var>]</code></a></dt>
<dd>
<p>objをselfとする. objが省略されたときは, home workspace, すなわち
irbを起動したときのmain objectをselfとする.</p></dd>
<dt><a name="L010007" id="L010007"><code>pushws, <var>irb_pushws</var>, <var>irb_push_workspace</var> [<var>obj</var>]</code></a></dt>
<dd>
<p>UNIXシェルコマンドのpushdと同様.</p></dd>
<dt><a name="L010008" id="L010008"><code>popws, <var>irb_popws</var>, <var>irb_pop_workspace</var></code></a></dt>
<dd>
<p>UNIXシェルコマンドのpopdと同様.</p></dd>
<dt><a name="L010009" id="L010009"><code>irb [<var>obj</var>]</code></a></dt>
<dd>
<p>サブirbを立ちあげる. objが指定された時は, そのobjをselfとする.</p></dd>
<dt><a name="L010010" id="L010010"><code>jobs, <var>irb_jobs</var></code></a></dt>
<dd>
<p>サブirbのリスト</p></dd>
<dt><a name="L010011" id="L010011"><code>fg <var>n</var>, <var>irb_fg</var> <var>n</var></code></a></dt>
<dd>
<p>指定したサブirbにスイッチする. nは, 次のものを指定する.</p>
<pre>irb番号
スレッド
irbオブジェクト
self(irb objで起動した時のobj)</pre></dd>
<dt><a name="L010012" id="L010012"><code>kill <var>n</var>, <var>irb_kill</var> <var>n</var></code></a></dt>
<dd>
<p>サブirbをkillする. nはfgと同じ.</p></dd>
<dt><a name="L010013" id="L010013"><code>souce, <var>irb_source</var>  <var>path</var></code></a></dt>
<dd>
<p>UNIXシェルコマンドのsourceと似ている. 現在の環境上でpath内のスクリ
プトを評価する.</p></dd>
<dt><a name="L010014" id="L010014"><code>irb_load <var>path</var>, <var>prev</var></code></a></dt>
<dd>
<p>Rubyのloadのirb版.</p></dd>
</dl>
<h1><a name="L010015" id="L010015">システム変数</a></h1>
<dl>
<dt><a name="L010016" id="L010016"><code>_</code></a></dt>
<dd>
<p>前の計算の実行結果を覚えている(ローカル変数).</p></dd>
<dt><a name="L010017" id="L010017"><code>__</code></a></dt>
<dd>
<p>実行結果の履歴を覚えている.
__[line_no]で、その行で実行した結果を得ることができる. line_noが負の
時には、最新の結果から-line_no前の結果を得ることができる.</p></dd>
</dl>
<h1><a name="L010018" id="L010018">使用例</a></h1>
<p>以下のような感じです.</p>
<pre>dim% ruby irb.rb
irb(main):001:0&gt; irb                        # サブirbの立ちあげ
irb#1(main):001:0&gt; jobs                     # サブirbのリスト
#0-&gt;irb on main (#&lt;Thread:0x400fb7e4&gt; : stop)
#1-&gt;irb#1 on main (#&lt;Thread:0x40125d64&gt; : running)
nil
irb#1(main):002:0&gt; fg 0                     # jobのスイッチ
nil
irb(main):002:0&gt; class Foo;end
nil
irb(main):003:0&gt; irb Foo                    # Fooをコンテキストしてirb</pre>
<pre># 立ちあげ</pre>
<pre>irb#2(Foo):001:0&gt; def foo                   # Foo#fooの定義
irb#2(Foo):002:1&gt;   print 1
irb#2(Foo):003:1&gt; end
nil
irb#2(Foo):004:0&gt; fg 0                      # jobをスイッチ
nil
irb(main):004:0&gt; jobs                       # jobのリスト
#0-&gt;irb on main (#&lt;Thread:0x400fb7e4&gt; : running)
#1-&gt;irb#1 on main (#&lt;Thread:0x40125d64&gt; : stop)
#2-&gt;irb#2 on Foo (#&lt;Thread:0x4011d54c&gt; : stop)
nil
irb(main):005:0&gt; Foo.instance_methods       # Foo#fooがちゃんと定義さ</pre>
<pre># れている</pre>
<pre>[&quot;foo&quot;]
irb(main):006:0&gt; fg 2                       # jobをスイッチ
nil
irb#2(Foo):005:0&gt; def bar                   # Foo#barを定義
irb#2(Foo):006:1&gt;  print &quot;bar&quot;
irb#2(Foo):007:1&gt; end
nil
irb#2(Foo):010:0&gt;  Foo.instance_methods
[&quot;bar&quot;, &quot;foo&quot;]
irb#2(Foo):011:0&gt; fg 0                      
nil
irb(main):007:0&gt; f = Foo.new
#&lt;Foo:0x4010af3c&gt;
irb(main):008:0&gt; irb f                      # Fooのインスタンスでirbを</pre>
<pre># 立ちあげる.</pre>
<pre>irb#3(#&lt;Foo:0x4010af3c&gt;):001:0&gt; jobs
#0-&gt;irb on main (#&lt;Thread:0x400fb7e4&gt; : stop)
#1-&gt;irb#1 on main (#&lt;Thread:0x40125d64&gt; : stop)
#2-&gt;irb#2 on Foo (#&lt;Thread:0x4011d54c&gt; : stop)
#3-&gt;irb#3 on #&lt;Foo:0x4010af3c&gt; (#&lt;Thread:0x4010a1e0&gt; : running)
nil
irb#3(#&lt;Foo:0x4010af3c&gt;):002:0&gt; foo         # f.fooの実行
nil
irb#3(#&lt;Foo:0x4010af3c&gt;):003:0&gt; bar         # f.barの実行
barnil
irb#3(#&lt;Foo:0x4010af3c&gt;):004:0&gt; kill 1, 2, 3# jobのkill
nil
irb(main):009:0&gt; jobs
#0-&gt;irb on main (#&lt;Thread:0x400fb7e4&gt; : running)
nil
irb(main):010:0&gt; exit                       # 終了
dim% </pre>
<h1><a name="L010019" id="L010019">使用上の制限</a></h1>
<p>irbは, 評価できる時点(式が閉じた時点)での逐次実行を行ないます. したがっ
て, rubyを直接使った時と, 若干異なる動作を行なう場合があります.</p>
<p>現在明らかになっている問題点を説明します.</p>
<h2><a name="L010020" id="L010020">ローカル変数の宣言</a></h2>
<p>rubyでは, 以下のプログラムはエラーになります.</p>
<pre>eval &quot;foo = 0&quot;
foo
--
-:2: undefined local variable or method `foo' for #&lt;Object:0x40283118&gt; (NameError)
---
NameError</pre>
<p>ところが, irbを用いると</p>
<pre>&gt;&gt; eval &quot;foo = 0&quot;
=&gt; 0
&gt;&gt; foo
=&gt; 0</pre>
<p>となり, エラーを起こしません. これは, rubyが最初にスクリプト全体をコン
パイルしてローカル変数を決定するからです. それに対し, irbは実行可能に
なる(式が閉じる)と自動的に評価しているからです. 上記の例では, </p>
<pre>evel &quot;foo = 0&quot; </pre>
<p>を行なった時点で評価を行ない, その時点で変数が定義されるため, 次式で 
変数fooは定義されているからです.</p>
<p>このようなrubyとirbの動作の違いを解決したい場合は, begin...endで括って
バッチ的に実行して下さい:</p>
<pre>&gt;&gt; begin
?&gt;   eval &quot;foo = 0&quot;
&gt;&gt;   foo
&gt;&gt; end
NameError: undefined local variable or method `foo' for #&lt;Object:0x4013d0f0&gt;
(irb):3
(irb_local_binding):1:in `eval'</pre>
<h2><a name="L010021" id="L010021">ヒアドキュメント</a></h2>
<p>現在のところヒアドキュメントの実装は不完全です. </p>
<h2><a name="L010022" id="L010022">シンボル</a></h2>
<p>シンボルであるかどうかの判断を間違えることがあります. 具体的には式が完了
しているのに継続行と見なすことがあります.</p>

<hr />
<div class="navigator"><span class="navigator">[<a href="index.html">MAIN</a>][<a href="refm543.html">INDEX</a>]&nbsp;&nbsp;&nbsp;[<a href="index.html">TOP</a>][<a href="index.html">UP</a>][<a href="refm505.html">&lt;-PREV</a>][<a href="refm507.html">NEXT-&gt;</a>]</span></div>

</body>
</html>