Ruby:如何将文件加载到交互式红宝石控制台(IRB)中?


Answers:


85

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

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


2
如果您要在每个文件之间添加-r以外的内容,那正是我的工作,并且可以正常工作。这是我将所有文件加载到irb中的方式,这样我就可以访问irb中所有应用程序的内容,当然,我使用rake脚本将启动文件加载到irb中,这样我就可rake irb以为我完成所有工作。
Thermatix 2014年

这是我读完人后的第一次尝试,但是我使用-r some_file.rb,30分钟后我发现了这个并添加了./,谢谢xd
Alexis

在Ubuntu 16.04中,我删除了点:irb -r /foo/foo.rb
noobninja

这不能访问文件中的变量。
Radon Rosborough

47

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

irb -I . -r foo.rb

foo.rb我要从当前目录加载的文件在哪里?该-I选项是将当前目录(.)添加到ruby的加载路径所必需的,如ruby手册页所述。这样就可以require从当前目录中存储文件,这是-rirb完成的选项。

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

irb -I foo/:bar/:baz/

此命令会将目录foobar和添加baz到ruby的加载路径。

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

irb -r ./foo.rb

或从内部irb

> require './foo.rb'

解决方案的结果与调用“ ruby​​ foo.rb”相同,但至少您知道发生了什么。但是我想让控制台保持打开状态,以便我可以执行更多命令。任何的想法?
Paul Verschoor '18 -4-6

32

输入 irb

然后

require './ruby_file.rb'

假设ruby_file.rb在同一目录中。相应地调整。


4
您也可以使用require_relative。如require "./lib/foo"不一样require_relative "lib/foo"
丹尼斯

.rb是可选的,您可以编写require './ruby_file'. I checked in ruby 1.9.3p551`
AMIC MING

./做什么?
the12

1
@
the12

28

两种方式:

  1. 运行程序的情况下加载源代码-这可以访问所有变量和函数:

source("filename.rb")

  1. 运行程序,然后进入交互模式-这仅提供对函数的访问,而不能访问变量:

require("filename.rb")


1
这似乎可以回答这个问题,即如何也重新加载脚本。我一直在使用require它似乎没有重新加载脚本(对原始源的任何修改都不会反映在您的会话中),而source似乎反映了对原始脚本的更改。
Michael Welch

4

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

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

require尝试查找文件时不需要您添加文件的后缀,并且仅将文件包含一次。 require应该代替load大部分时间使用。

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


2

在文本编辑器中输入红宝石代码

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

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

之后,输入irb和您的文件名(不要忘记添加扩展名(.rb))。

点击这里查看使用irb加载ruby文件

在该图像中,我加载了一个仅显示“红宝石”的简单红宝石文件。


0

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


Linux Mint。对不起,我应该补充一点。
Mike Kennedy

0

对于那些想要从其他目录加载.rb文件的用户。只需将目录的字符串表示符添加到$:变量即可。

> $: << "/directory/to/the/required/rb/file"
> require "some_file"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.