library irb

要約

irb は Interactive Ruby の略です。 irb を使うと、Ruby の式を標準入力から簡単に入力・実行することができます。

irb の使い方

Ruby さえ知っていれば irb を使うのは簡単です。 irb コマンドを実行すると、以下のようなプロンプトが表れます。

$ irb
irb(main):001:0>

あとは Ruby の式を入力するだけで、その式が実行され、結果が表示されます。

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>

また irb コマンドは readline ライブラリにも対応しています。 readline ライブラリがインストールされている時には自動的にコマンドライン編集や履歴の機能が使えるようになります。

irb のコマンドラインオプション

irb [options] file_name opts
options:
-f                ~/.irbrc を読み込まない
-m                bc モード (分数と行列の計算ができる)
-d                $DEBUG を true にする (ruby -d と同じ)
-w                ruby -w と同じ
-W[level=2]       ruby -W と同じ
-r library        ruby -r と同じ
-I                ruby -I と同じ
-U                ruby -U と同じ
-E enc            ruby -E と同じ
--verbose         これから実行する行を表示する
--noverbose       これから実行する行を表示しない (デフォルト)
--echo            実行結果を表示する (デフォルト)
--noecho          実行結果を表示しない
--inspect         結果出力にinspectを用いる (bc モード以外ではデフォルト)
--noinspect       結果出力にinspectを用いない
--readline        readlineライブラリを利用する
--noreadline      readlineライブラリを利用しない。デフォルトでは
                  inf-ruby-mode 以外で readline ライブラリを利用する。
--prompt prompt-mode
--prompt-mode prompt-mode
                  プロンプトモードを切り替える。現在定義されているプ
                  ロンプトモードは、default/simple/xmp/inf-ruby。
--inf-ruby-mode   emacsのinf-ruby-mode 用のプロンプト表示を行なう。
                  特に指定がない限り readline ライブラリは使わなくなる。
--sample-book-mode
--simple-prompt
                  非常にシンプルなプロンプトを用いるモード。
--noprompt        プロンプトを表示しない。
--tracer          コマンド実行時にトレースする。
--back-trace-limit n
                  バックトレース表示をバックトレースの頭から n、
                  うしろから n だけ行なう。デフォルト値は 16。
--context-mode n  新しいワークスペースを作成した時に関連する Binding
                  オブジェクトの作成方法を 0 から 3 で設定する。
                  (IRB::Context 参照)
--single-irb      irb 中で self を実行して得られるオブジェクトをサブ irb と共
                  有する
--irb_debug n     irb のデバッグレベルを n に設定する
                  (ユーザは利用すべきではない)
-v, --version     irb のバージョンを表示する
-h, --help        irb のヘルプを表示する
--                以降のコマンドライン引数をオプションとして扱わない

irb のカスタマイズ

irb コマンドは起動時にホームディレクトリの .irbrc というファイルを読み込みます。 .irbrc は Ruby スクリプトです。ホームディレクトリに .irbrc が存在しない場合は、カレントディレクトリの .irbrc, irb.rc, _irbrc, $irbrc を順番にロードしようと試みます。

以下のような (Ruby の) 式を .irbrc に記述すると、 irb コマンドのオプションを指定したのと同じ効果が得られます。

IRB.conf[:AUTO_INDENT] = false
IRB.conf[:BACK_TRACE_LIMIT] = 16
IRB.conf[:DEBUG_LEVEL] = 1
IRB.conf[:ECHO] = nil
IRB.conf[:EVAL_HISTORY] = nil
IRB.conf[:HISTORY_FILE] = nil
IRB.conf[:IGNORE_EOF] = true
IRB.conf[:IGNORE_SIGINT] = true
IRB.conf[:INSPECT_MODE] = nil
IRB.conf[:IRB_NAME] = "irb"
IRB.conf[:IRB_RC] = nil
IRB.conf[:MATH_MODE] = false
IRB.conf[:PROMPT] = {....}
IRB.conf[:PROMPT_MODE] = :DEFAULT
IRB.conf[:SINGLE_IRB] = false
IRB.conf[:SAVE_HISTORY] = nil
IRB.conf[:USE_LOADER] = true
IRB.conf[:USE_READLINE] = nil
IRB.conf[:USE_TRACER] = true
IRB.conf[:VERBOSE] = true

それぞれの設定値の詳細については、IRB::Context を参照してください。

プロンプトのカスタマイズ

irb のプロンプトをカスタマイズしたい時は、まず独自のプロンプトモードを作成し、それをコマンドラインや .irbrc に指定します。

まず、新しいプロンプトモードを作成するには、例えば .irbrc で以下のように記述します。

# 新しいプロンプトモード MY_PROMPT を作成する
IRB.conf[:PROMPT][:MY_PROMPT] = {
  :PROMPT_I => nil,          # 通常時のプロンプト
  :PROMPT_N => nil,          # 継続行のプロンプト
  :PROMPT_S => nil,          # 文字列などの継続行のプロンプト
  :PROMPT_C => nil,          # 式が継続している時のプロンプト
  :RETURN => "    ==>%s\n"   # メソッドから戻る時のプロンプト
}

いま作成した新しいプロンプトモードを使うには、以下のように irb コマンドに --prompt オプションを指定します。

$ irb --prompt my-prompt

毎回指定するのが面倒なら、.irbrc に以下の式を記述します。

# プロンプトモード MY_PROMPT を使う
IRB.conf[:PROMPT_MODE] = :MY_PROMPT

PROMPT_I, PROMPT_S, PROMPT_C にはフォーマット文字列を指定します。フォーマット文字列では Kernel.#printf のように「%」を用いた記法が使えます。フォーマット文字列で使用可能な記法は以下の通りです。

%N

起動しているコマンド名(IRB::Context#irb_name)

%m

main オブジェクト (self) を to_s した文字列

%M

main オブジェクト (self) を inspect した文字列

%l

文字列中のタイプを表す (", ', /, ], `]'は%wの中の時)

%NNi

インデントのレベルを、NN 桁に右詰めした文字列。 NN は省略可能。

%NNn

行番号を、NN 桁に右詰めした文字列。 NN は省略可能。

%%

文字「%」それ自体

また、RETURN は現在のところ printf と全く同じ形式で指定します。ただし、将来は仕様が変わる可能性があります。

例えば、デフォルトのプロンプトモードである「default」プロンプトモードは以下のように設定されています。

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"
}

プロンプトモードは :DEFAULT の他に :NULL, :CLASSIC, :SIMPLE, :XMP が定義されています。

サブ irb

irb では、起動時の irb インタプリタとは独立した環境を持つ「サブ irb」を任意の数だけ起動することができます。サブ irb は、irb 実行中に「irb」と入力すると起動します。

例えば以下の実行例を見てください。

irb(main):004:0> x = "OK"          # ローカル変数 x を定義
=> "OK"
irb(main):005:0> x                 # x を表示
=> "OK"
irb(main):006:0> irb               # サブ irb を起動
irb#1(main):001:0> x               # x を表示
NameError: undefined local variable or method `x' for main:Object
        from (irb#1):1:in `Kernel#binding'

起動時のインタプリタでローカル変数 x を定義しましたが、「irb」でサブ irb を起動すると、ローカル変数 x が見えなくなっています。これが「独立した環境」の意味です。

サブ irb の設定

irb コマンド起動時のインタプリタの設定はコマンドラインオプションと IRB.conf の値で決まります。それに対して、サブ irb インタプリタの設定は、各インタプリタの「conf」オブジェクトの値で決まります。

conf オブジェクトの値を変更するには、まず以下のようにサブ irb を起動してから conf オブジェクトの値を一つ一つ変更する方法があります。

$ irb
irb(main):001:0> irb                     # サブ irb を起動
irb#1(main):001:0> conf.prompt_i         # prompt_i の値を確認
=> "%N(%m):%03n:%i> "
irb#1(main):002:0> conf.prompt_i = ">"   # prompt_i の値を変更
=> ">"
>                                        # プロンプトが変わった

しかし、サブ irb を起動するたびに設定を入力するのは面倒です。そこで、IRB.conf[:IRB_RC] を使う方法を紹介します。

IRB.conf[:IRB_RC] に Proc オブジェクトを設定しておくと、サブ irb が起動されるたびに、その Proc オブジェクトに IRB::Context オブジェクトを渡して実行します。これによってサブ irb の設定をまとめて設定することができます。

以下に例を示します。

$ irb
irb(main):001:0> IRB.conf[:IRB_RC] = lambda {|conf| conf.prompt_i = "> " }
=> #<Proc:0x00002a95fa3fd8@(irb):2>
irb(main):002:0> irb
>

irb の使用例

irb のいろいろな使用例を以下に示します。

$ irb
irb(main):001:0> irb                        # サブirbの立ちあげ
irb#1(main):001:0> jobs                     # サブirbのリスト
#0->irb on main (#<Thread:0x400fb7e4> : stop)
#1->irb#1 on main (#<Thread:0x40125d64> : running)
nil
irb#1(main):002:0> fg 0                     # jobのスイッチ
nil
irb(main):002:0> class Foo;end
nil
irb(main):003:0> irb Foo                    # Fooをコンテキストしてirb
                                            # 立ちあげ
irb#2(Foo):001:0> def foo                   # Foo#fooの定義
irb#2(Foo):002:1>   print 1
irb#2(Foo):003:1> end
nil
irb#2(Foo):004:0> fg 0                      # jobをスイッチ
nil
irb(main):004:0> jobs                       # 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がちゃんと定義さ
                                            # れている
["foo"]
irb(main):006:0> fg 2                       # jobをスイッチ
nil
irb#2(Foo):005:0> def bar                   # 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                      # Fooのインスタンスでirbを
                                            # 立ちあげる.
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         # f.fooの実行
nil
irb#3(#<Foo:0x4010af3c>):003:0> bar         # f.barの実行
barnil
irb#3(#<Foo:0x4010af3c>):004:0> kill 1, 2, 3# jobのkill
nil
irb(main):009:0> jobs
#0->irb on main (#<Thread:0x400fb7e4> : running)
nil
irb(main):010:0> exit                       # 終了
$

irb で使用可能なコマンド一覧

この一覧に記述されているコマンドは、irb のプロンプトでレシーバなしで使うことができます。

irb のコマンドは、簡単な名前と頭に「irb_」をつけた名前との両方が定義されています。これは、簡単な名前がオーバーライドされた場合にもirb のコマンドが実行できるようにするためです。

exit
irb_exit
quit
irb_quit

irb を終了します。サブ irb で呼び出した場合は、そのサブ irb だけを終了します。

conf
context
irb_context

irb の現在の設定です。IRB::Context オブジェクトです。このメソッドで得た IRB::Context オブジェクトに対してメソッドを呼び出すことで、現在稼働中の irb インタプリタの設定を表示・変更できます。

cwws
pwws
irb_cwws
irb_pwws
irb_print_working_workspace
irb_current_working_binding
irb_print_working_binding
irb_cwb
irb_pwb

irb の self を返します。

cws(*obj)
chws(*obj)
irb_cws(*obj)
irb_chws(*obj)
irb_change_workspace(*obj)
cb(*obj)
irb_cb(*obj)
irb_change_binding(*obj)

irb の self を obj に変更します。 obj が省略されたときは、 irb を起動したときの main オブジェクトを self にします。

workspaces
irb_workspaces
irb_bindings
bindings

現在のワークスペースの一覧を返します。

pushws(*obj)
irb_pushws(*obj)
irb_push_workspace(*obj)
irb_push_binding(*obj)
irb_pushb(*obj)
pushb(*obj)

UNIX シェルコマンドの pushd と同じです。

popws
irb_popws
irb_pop_workspace
irb_pop_binding
irb_popb
popb

UNIX シェルコマンドの popd と同じです。

irb
irb(obj)

新しいサブ irb インタプリタを起動します。オブジェクト obj が指定された時はその obj を self にします。

jobs
irb_jobs

サブ irb のリストを返します。

fg(n)
irb_fg(n)

n で指定したサブ irb に移動します。 n は以下のいずれかの値で指定します。

  * irb インタプリタ番号
  * irb オブジェクト
  * スレッド ID
  * 各インタプリタの self (「irb(obj)」で起動した時の obj)
kill(n)
irb_kill(n)

n で指定したサブ irb を停止します。 n は以下のいずれかの値で指定します。

  * irb インタプリタ番号
  * irb オブジェクト
  * スレッド ID
  * 各インタプリタの self (「irb(obj)」で起動した時の obj)
source(path)
irb_source(path)

現在の irb インタプリタ上で、 Ruby スクリプト path を評価します。

path の内容を irb で一行ずつタイプしたかのように、irb 上で一行ずつ評価されます。$" は更新されず、何度でも実行し直す事ができます。

source という名前は UNIX シェルの source コマンドに由来します。

irb_load(path, prev = nil)

Ruby の load の irb 版です。ファイル path を Ruby スクリプトとみなし、現在の irb インタプリタ上で実行します。ただし、prev に true を指定した場合は実行は内部的に生成される無名モジュール上で行われ、グローバルな名前空間を汚染しません。

Kernel.#load と異なり、path の内容を irb で一行ずつタイプしたかのように、irb 上で一行ずつ評価されます。

irb_require(path)

Ruby の require の irb 版です。ファイル path を現在の irb インタプリタ上で実行します。

path に Ruby スクリプトを指定した場合は、Kernel.#kernel と異なり、path の内容を irb で一行ずつタイプしたかのように、irb 上で一行ずつ評価されます。require に成功した場合は true を、そうでない場合は false を返します。

拡張ライブラリ(*.so,*.o,*.dll など)を指定した場合は単純に require されます。

help(*names)
irb_help(*names)

RI から Ruby のドキュメントを参照します。

  irb(main):001:0> help String#match
  ...

names を指定しなかった場合は、RI を対話的なモードで起動します。メソッド名などを入力する事でドキュメントの検索が行えます。入力のタブ補完をする事ができます。また、空行を入力する事で irb のプロンプトに戻る事ができます。

  irb(main):001:0> help

  Enter the method name you want to look up.
  You can use tab to autocomplete.
  Enter a blank line to exit.

  >> String#match
  String#match

  (from ruby core)
  ------------------------------------------------------------------------------
    str.match(pattern)        -> matchdata or nil
    str.match(pattern, pos)   -> matchdata or nil
  ...

システム変数

_

直前の式の実行結果です。

例:

  $ irb
  irb(main):001:0> 10
  => 10
  irb(main):002:0> 2**32
  => 4294967296
  irb(main):003:0> _
  => 4294967296
  irb(main):004:0> _ - 2**31
  => 2147483648
  irb(main):005:0>
__

実行結果の履歴です。 __[lineno] で、lineno 行で実行した結果を得られます。 lineno が負の時は、最新の結果から -lineno 行だけ前の結果を得られます。

この変数はデフォルトでは使えません。この変数を使用するには、あらかじめ .irbrc などで conf.eval_history の値を指定しておかなければいけません。

例:

  $ irb
  irb(main):001:0> conf.eval_history = 100
  => 100
  irb(main):002:0> 1 + 2
  => 3
  irb(main):003:0> 'hoge' + 'foo'
  => "hogefoo"
  irb(main):004:0> __[2]
  => 3
  irb(main):005:0> __[3]
  => "hogefoo"
  irb(main):006:0> __[-1]
  => "hogefoo"
  irb(main):007:0>

使用上の制限

irbは, 評価できる時点(式が閉じた時点)での逐次実行を行ないます. したがって, rubyを直接使った時と若干異なる動作を行なう場合があります.

現在明らかになっている問題点を説明します.

ローカル変数の宣言

Ruby では以下のプログラムはエラーになります.

eval "foo = 0"
p foo    # -:2: undefined local variable or method `foo' for #<Object:0x40283118> (NameError)

ところが irb を用いると、以下のように、エラーになりません。

>> eval "foo = 0"
=> 0
>> foo
=> 0

この違いは、Ruby と irb のプログラムのコンパイル方法の差に起因します。 Ruby は最初にスクリプト全体をコンパイルしてローカル変数を決定します。それに対し、irb は式が完結して実行可能になった時点で順番にコンパイルします。上記の例では、

eval "foo = 0"

が入力された時点でまずその式をコンパイル・実行します。この時点で変数 foo が定義されるため、次の式を入力する時点ですでに変数 foo が定義されているのです。

この Ruby と irb の動作の違いをなくしたい場合は、 irb では以下のように式を begin 〜 end でくくって入力してください。

>> begin
?>   eval "foo = 0"
>>   foo
>> end
NameError: undefined local variable or method `foo' for #<Object:0x4013d0f0>
(irb):3
(irb_local_binding):1:in `eval'

ヒアドキュメント

現在のところヒアドキュメントの実装は不完全です。

シンボル

irb はシンボルであるかどうかの判断を間違えることがあります。具体的には、式が完了しているのに継続行と見なすことがあります。

履歴の保存

さらに、.irbrc で以下のように conf.save_history の値を指定しておくと、実行結果の履歴がファイルに保存されます。

IRB.conf[:SAVE_HISTORY] = 100

履歴ファイルの名前はデフォルトでは ~/.irb_history です。履歴ファイルの名前は IRB.conf[:HISTORY_FILE] で指定できます。

実行結果の出力方式

irb のプロンプト中では conf.inspect_mode で、.irbrc 中では IRB.conf[:INSPECT_MODE] に以下のいずれかの値を設定する事で、結果出力の方式を変更する事ができます。

false, :to_s, :raw

出力結果を to_s したものを表示します。

true, :p, :inspect

出力結果を inspect したものを表示します。

:pp, :pretty_inspect

出力結果を pretty_inspect したものを表示します。

:yaml, :YAML

出力結果を YAML 形式にしたものを表示します。

:marshal, :Marshal, :MARSHAL, Marshal

出力結果を Marshal.#dump したものを表示します。

例:

$ irb
irb(main):001:0> conf.inspect_mode = :yaml
irb(main):002:0> :foo # => --- :foo

また、irb の起動時に --inspect オプションを指定する事でも同様の設定を行えます。

$ irb --inspect [raw|p|pp|yaml|marshal|...]

上記以外にも独自の出力方式を追加する事ができます。詳しくは IRB::Inspector.def_inspector を参照してください。

クラス

IRB::Context

irb の設定を扱うためのクラスです。

IRB::ExtendCommand::Nop

irb 中でコマンドを拡張するクラスのベースになるクラスです。サブクラスを定義してコマンドを拡張します。

  IRB::ExtendCommand::ChangeWorkspace

irb 中の irb_change_workspace コマンドのための拡張を定義したクラスです。

  IRB::ExtendCommand::CurrentWorkingWorkspace

irb 中の irb_current_working_workspace コマンドのための拡張を定義したクラスです。

  IRB::ExtendCommand::Foreground

irb 中の irb_fg コマンドのための拡張を定義したクラスです。

  IRB::ExtendCommand::Help

irb 中の help コマンドのための拡張を定義したクラスです。

  IRB::ExtendCommand::IrbCommand

irb 中の irb コマンドのための拡張を定義したクラスです。

  IRB::ExtendCommand::Jobs

irb 中の irb_jobs コマンドのための拡張を定義したクラスです。

  IRB::ExtendCommand::Kill

irb 中の irb_kill コマンドのための拡張を定義したクラスです。

  IRB::ExtendCommand::Load

irb 中の irb_load コマンドのための拡張を定義したクラスです。

  IRB::ExtendCommand::PopWorkspace

irb 中の irb_pop_workspace コマンドのための拡張を定義したクラスです。

  IRB::ExtendCommand::PushWorkspace

irb 中の irb_push_workspace コマンドのための拡張を定義したクラスです。

  IRB::ExtendCommand::Require

irb 中の irb_require コマンドのための拡張を定義したクラスです。

  IRB::ExtendCommand::Source

irb 中の irb_source コマンドのための拡張を定義したクラスです。

  IRB::ExtendCommand::Workspaces

irb 中の irb_workspaces コマンドのための拡張を定義したクラスです。

IRB::InputMethod

抽象的な入力を表すクラスです。ライブラリ内部で使用します。

  IRB::FileInputMethod

ファイルからの入力を表すクラスです。ライブラリ内部で使用します。

  IRB::ReadlineInputMethod

readline を用いた標準入力からの入力を表すクラスです。ライブラリ内部で使用します。readline の require に失敗した場合は定義されません。

  IRB::StdioInputMethod

標準入力を表すクラスです。ライブラリ内部で使用します。

IRB::Irb

irb インタプリタのメインルーチンです。

IRB::OutputMethod

抽象的な出力を表すクラスです。ライブラリ内部で使用します。

  IRB::StdioOutputMethod

標準出力を表すクラスです。ライブラリ内部で使用します。

IRB::WorkSpace

irb 中で self を表すためのクラスです。

モジュール

IRB

irb のメインモジュールです。

IRB::ContextExtender

IRB::Context を拡張するためのモジュールです。

IRB::ExtendCommandBundle

irb のコマンドを拡張するためのモジュールです。

IRB::HistorySavingAbility

IRB::HistorySavingAbility を extend したオブジェクトに irb のヒストリの読み込み、保存の機能を提供するモジュールです。

IRB::IrbLoader

load または require 時の irb のファイル読み込み機能(irb_load、 irb_require)を定義するモジュールです。

オブジェクト

IRB::MagicFile

irb が扱う入力やファイル中のマジックコメントを正しく扱うためのクラスです。

例外クラス

IRB::Abort

実行中の処理を中断する時に発生させる例外クラスです。

IRB::LoadAbort

irb 中で require などを中断した場合に発生する例外です。

同時にrequireされるライブラリ

cmath

複素数演算をサポートするライブラリです。

e2mmap

例外クラスに特定のエラーメッセージ用フォーマットを関連づけるためのライブラリです。

forwardable

クラスやオブジェクトに、メソッドの委譲機能を追加するためのライブラリです。

irb/cmd/chws

irb 中の irb_current_working_workspace、irb_change_workspace コマンドのための拡張を定義したサブライブラリです。

irb/cmd/help

irb 中の help コマンドのための拡張を定義したサブライブラリです。

irb/cmd/load

irb 中の irb_load、irb_require、irb_source コマンドのための拡張を定義したサブライブラリです。

irb/cmd/nop

irb 中でコマンドを拡張する各ライブラリのベースになるクラスを扱うサブライブラリです。

irb/cmd/pushws

irb 中の irb_workspaces、irb_push_workspace、irb_pop_workspace コマンドのための拡張を定義したサブライブラリです。

irb/cmd/subirb

irb 中の irb、irb_jobs、irb_fg、irb_kill コマンドのための拡張を定義したサブライブラリです。

irb/context

irb の設定を扱うためのサブライブラリです。

irb/ext/change-ws

IRB::Context に irb 中での self を管理する機能を提供するサブライブラリです。

irb/ext/history

IRB::Context に実行結果の履歴を保持する機能を提供するサブライブラリです。

irb/ext/loader

load または require 時の irb のファイル読み込み機能(irb_load、 irb_require)を定義するサブライブラリです。

irb/ext/math-mode

irb コマンドで実行結果を Object#inspect の代わりに Object#to_s した結果で表示するためのサブライブラリです。

irb/ext/multi-irb

irb 中で複数の独立した irb を扱えるようにするためのサブライブラリです。

irb/ext/save-history

IRB::Context にヒストリの読み込み、保存の機能を提供するサブライブラリです。

irb/ext/tracer

irb への入力を評価する時に tracer ライブラリを使用してトレース出力を行う機能を提供するサブライブラリです。

irb/ext/use-loader

load または require 時に irb のファイル読み込み機能(irb_load、 irb_require)を使うように設定する機能を提供するサブライブラリです。

irb/ext/workspaces

IRB::Context に irb 中での self を管理する機能を提供するサブライブラリです。

irb/extend-command

irb を拡張するためのサブライブラリです。

irb/init

irb の初期化をするためのライブラリです。

irb/input-method

irb が入力を扱うためのサブライブラリです。

irb/locale

ライブラリ内部で使用します。

irb/magic-file

irb が扱う入力やファイル中のマジックコメントを正しく扱うためのサブライブラリです。

irb/notifier

ライブラリ内部で使用します。

irb/output-method

irb が出力を扱うためのサブライブラリです。

irb/ruby-lex

Ruby のソースコードを字句解析するためのサブライブラリです。

irb/ruby-token

Ruby のソースコード中の各種トークンを定義したサブライブラリです。

irb/slex

Ruby のソースコードを字句解析するためのサブライブラリです。 irb/ruby-lex から使用されます。

irb/src_encoding

irb が扱う入力やファイル中の規程のエンコーディングを正しく扱うためのサブライブラリです。

irb/version

irb ライブラリのバージョンを定義したサブライブラリです。

irb/workspace

irb 中で self を扱うためのサブライブラリです。

irb/ws-for-case-2

ライブラリ内部で使用します。

mathn

RationalComplex をよりシームレスに利用できるようにするライブラリです。数値ライブラリの挙動をグローバルに変更します。

matrix

行列と数ベクトルを扱うためのライブラリです。

prime

素数や素因数分解を扱うライブラリです。

readline

GNU Readline によるコマンドライン入力インタフェースを提供するライブラリです。

singleton

Singleton パターンを扱うためのライブラリです。

thread

このライブラリで提供されていたクラスは 2.3.0 で組み込みクラスになりました。互換性のためだけに残されています。

tracer

実行トレース出力をとる機能を提供します。

サブライブラリ

irb/completion

irb の completion 機能を提供するライブラリです。

irb/frame

現在実行中のフレーム情報を取り扱うためのサブライブラリです。

irb/help

irb コマンドのヘルプを表示するためのライブラリです。

irb/inspector

irb コマンドで実行結果の出力方式(inspect_mode)を定義するためのサブライブラリです。

irb/xmp

Ruby のソースコードとその実行結果を、行ごとに交互に表示するためのライブラリです。irb を実行しなくても、使用することが出来ます。