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

nbo*_*bon 78 ruby irb

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

小智 78

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

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

  • 如果你想在每个文件之间添加不仅仅是-r,那么这就是我的工作.这就是我将所有文件加载到irb中的方式,因此我可以在irb中访问我所有应用程序的内容,当然我使用rake脚本将启动文件加载到irb中,所以我可以"rake irb",它可以为我完成所有操作. (2认同)

wac*_*chr 40

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

irb -I . -r foo.rb
Run Code Online (Sandbox Code Playgroud)

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

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

irb -I foo/:bar/:baz/
Run Code Online (Sandbox Code Playgroud)

此命令将添加目录foo,bar以及bazruby的加载路径.

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

irb -r ./foo.rb
Run Code Online (Sandbox Code Playgroud)

或来自内部irb:

> require './foo.rb'
Run Code Online (Sandbox Code Playgroud)


oky*_*eni 31

输入 irb

然后

require './ruby_file.rb'
Run Code Online (Sandbox Code Playgroud)

这是假设ruby_file.rb在同一目录中.相应调整.

  • 你也可以使用`require_relative`.例如`require'./lib/foo"`与`require_relative"lib/foo"`的作用相同 (4认同)

Ass*_*him 21

两种方式:

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

source("filename.rb")

  1. 运行程序然后进入交互模式 - 这只能访问函数,而不是变量:

require("filename.rb")


Mic*_*ael 4

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

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

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

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