95

我正在使用 IRB(交互式 Ruby 控制台)来学习如何使用 Ruby 进行编程。如果我先在文本编辑器中编写程序,如何将文件加载到控制台中?

4

8 回答 8

95

如果您只需要将一个文件加载到 IRB 中,irb -r ./your_file.rb如果它在同一目录中,则可以调用它。

这会自动需要该文件,并允许您立即使用它。

于 2013-01-09T17:41:30.250 回答
53

在 Ubuntu 14.04 上使用 ruby​​ 1.9.3,我可以irb使用以下命令行将文件从当前目录加载到:

irb -I . -r foo.rb

foo.rb我要从当前目录加载的文件在哪里。该-I选项对于将当前目录 ( .) 添加到 ruby​​ 的加载路径是必需的,如 ruby​​ 手册页中所述。这使得require从当前目录中获取文件成为可能,这是该-r选项要irb完成的任务。

当我遇到这个问题时,对我来说并不明显的关键部分是-I选项。完成此操作后,您可以require 'foo.rb'从内部调用irb当前目录中的任何文件。当然,您可以指定您想要的任何目录,而不仅仅是.使用-I选项。要在加载路径上包含多个目录,请用冒号 (:) 分隔它们,例如:

irb -I foo/:bar/:baz/

此命令会将目录foo、、bar和添加baz到 ruby​​ 的加载路径。

最后一种选择是在使用require-r加载文件时使用文件的相对或绝对路径:

irb -r ./foo.rb

或从内部irb

> require './foo.rb'
于 2015-01-09T22:46:36.280 回答
35

输入irb

接着

require './ruby_file.rb'

这是假设 ruby​​_file.rb 在同一目录中。相应调整。

于 2014-12-16T16:13:30.787 回答
31

Two ways:

  1. to load source without running the program -- this gives access to all variables and functions:

source("filename.rb")

  1. to run program and then drop into interactive mode -- this only gives access to functions, not variables:

require("filename.rb")

于 2016-07-22T18:42:11.257 回答
4

这取决于你的红宝石。Ruby 1.8 包含您当前的路径,而 ruby​​ 1.9 不包含。评估$:以确定您的路径是否包含在内。因此,在 ruby​​ 1.9 中,您必须使用整个路径,这始终是一个安全的选择。

然后您可以使用requireload包含该文件。

require不要求您在尝试查找文件时添加文件后缀,并且只会包含该文件一次。 require应该使用而不是load大部分时间。

如果您要使用 ruby​​ 1.8,请查看将目录添加到 $LOAD_PATH (Ruby)

于 2012-10-28T19:37:53.220 回答
1

在文本编辑器中输入 ruby​​ 代码

使用扩展名.rb保存它(例如:demo.rb)。

在 linux 中,打开终端,然后将目录更改为该文件的当前位置(cd 命令用于更改目录)。

之后,输入 irb 和你的文件名(不要忘记包括你的扩展名(.rb))。

单击此处查看使用 irb 加载 ruby​​ 文件

在那个图像中,我加载了一个简单的 ruby​​ 文件,它只打印“ruby”。

于 2017-06-30T10:13:41.097 回答
0

将路径加载到 irb 的另一种方法是输入 require 然后将文件拖放到终端中。- 使用 Linux Mint 进行测试。

于 2017-03-01T17:11:04.557 回答
-1

对于那些想要从不同目录加载 .rb 文件的人。只需将目录的字符串表示器添加到 $: 变量。

> $: << "/directory/to/the/required/rb/file"
> require "some_file"
于 2019-08-20T11:30:21.083 回答