IRB - 交互式 Ruby

有时候你只想用 Ruby “试试某些东西”。标准的 Ruby 解释器 Ruby.exe 远非用于此目的理想工具。虽然可以从命令提示符运行 Ruby,并一次输入一行代码,但只有在输入文件结束符(Windows 上为 CTRL+Z,其它操作系统时为 CTRL+D)时才会执行代码。要获得与 Ruby 交互的更好方法,请使用 Interactive Ruby shell,IRB.exe。要开始使用这个,请转到命令提示符并输入:

  1. irb

你现在应该看到类似于以下内容的提示:

  1. irb(main):001:0>

现在开始输入一些 Ruby 代码。你可以在多行上输入表达式;表达式完成后,irb 将对其进行计算并显示结果。尝试以下(在 + 后按 Enter 键):

  1. x = ( 10 +
  2. ( 2 * 4 ) )

在闭合括号后按 Enter 键时,irb 将计算表达式并显示结果:

  1. => 18

你现在可以计算 x。输入:

  1. x

irb 显示:

  1. => 18

但要小心。尝试输入:

  1. x = (10
  2. + (2*4))

这次的结果是:

  1. => 8

事实上,这是正常的 Ruby 行为。这可以通过以下事实来解释:换行符作为终止符,而 + 运算符在开始新行时充当一元运算符(它只是声明后面的表达式为正)。你将在本章末尾的深入探索中找到更全面的解释。现在,请注意,当一次输入一行时,换行符的位置很重要!使用 irb 时,你可以判断解释器是否认为你已结束输入语句。如果你这样做,则显示以 ">" 结尾的普通提示:

  1. irb(main):013:1>

如果语句不完整,则提示以星号结束:

  1. irb(main):013:1*

在上面的两个示例中,当你输入没有加号的第一行时会显示 > 提示符:

  1. x = ( 10

但是当你使用加号输入时会显示 * 提示符:

  1. x = ( 10 +

前一种情况表明,irb 认为该语句是完整的;后一种情况表明它正在等待语句被完成。

如果你希望,可以将 Ruby 程序加载到 irb 中,方法是将程序名称传递给它:

  1. irb myprogram.rb

你也可以使用各种选项调用它,如下一页所示:

  1. Usage: irb.rb [options] [programfile] [arguments]
选项 解释说明
-f 禁止阅读 ~/.irbrc
-m Bc 模式(加载可用的 mathn,fraction 或 matrix)
-d 将 $DEBUG 设置为 true(与 `ruby -d’ 相同)
-r load-module 与 `ruby -r’ 相同
-I path 指定 $LOAD_PATH 目录
—inspect 使用 `inspect’ 作为输出(默认除了 bc 模式)
—noinspect 不使用 inspect 输出
—readline 使用 Readline 扩展模块
—noreadline 不使用 Readline 扩展模块
—prompt 提示模式,prompt-mode
—prompt-mode prompt-mode 切换提示模式(prompt mode)。预定义的提示模式是“默认”,“简单”,“xmp” 和 “inf-ruby” 的
—inf-ruby-mode 在 emacs 上使用适合 inf-ruby-mode 的提示符。 禁止 —readline
—simple-prompt 简单的提示模式
—noprompt 没有提示模式
—tracer 显示每次执行命令的轨迹
—back-trace-limit 显示回溯顶部 n 个和尾部 n 个。默认值价值是 16。
—irb_debug n 将内部调试级别设置为 n(不适合常用)
-v, —version 打印 irb 的版本

你可以通过在命令行输入以下内容来查看这些选项的列表:

  1. irb --help

你可以通过在提示符处输入单词 quit 或按 CTRL+BREAK 结束 irb 会话。

虽然 irb 可能对尝试某些代码很有用,但它并不提供调试程序所需的所有功能。但是,Ruby 提供了一个命令行调试器。