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

Ruby:如何将文件加载到交互式Ruby控制台(IRB)?,ruby,irb,Ruby,Irb,我正在使用IRB(交互式ruby控制台)学习如何使用ruby编程。如果我先在文本编辑器中编写程序,如何将文件加载到控制台?这取决于您的ruby。Ruby1.8包含您的当前路径,而Ruby1.9不包含。评估$:以确定是否包含您的路径。因此,在ruby 1.9中,必须使用整个路径,这始终是一个安全的赌注 然后可以使用require或load来包含文件 require不要求您在尝试查找文件时添加文件后缀,并且只包含该文件一次要求而不是加载 如果您只需要将一个文件加载到IRB中,那么可以使用IRB-r.

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

这取决于您的ruby。Ruby1.8包含您的当前路径,而Ruby1.9不包含。评估
$:
以确定是否包含您的路径。因此,在ruby 1.9中,必须使用整个路径,这始终是一个安全的赌注

然后可以使用
require
load
来包含文件

require
不要求您在尝试查找文件时添加文件后缀,并且只包含该文件一次<大多数情况下,应使用代码>要求而不是加载


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


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

键入
irb

然后

require './ruby_file.rb'

这是假设ruby_file.rb位于同一目录中。相应地进行调整。

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

irb -I . -r foo.rb
其中
foo.rb
是我要从当前目录加载的文件。如ruby手册页中所述,
-I
选项是将当前目录(
)添加到ruby的加载路径所必需的。这使得
需要当前目录中的文件成为可能,这就是
-r
选项对
irb
的作用

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

此命令将把目录
foo
bar
baz
添加到ruby的加载路径

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

irb -r ./foo.rb
或者从
irb
内部:

> require './foo.rb'
两种方式:

  • 要在不运行程序的情况下加载源代码,可以访问所有变量和函数:
  • source(“filename.rb”)

  • 要运行程序,然后进入交互模式--这只允许访问函数,而不是变量:

  • require(“filename.rb”)
    将路径加载到irb的另一种方法是键入require,然后将文件拖放到终端中。在文本编辑器中键入ruby代码

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

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

    然后,键入irb和文件名(不要忘记包含扩展名(.rb))


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

    对于那些希望从不同目录加载.rb文件的人。只需将目录的字符串repenter添加到$:变量

    > $: << "/directory/to/the/required/rb/file"
    > require "some_file"
    
    $:需要“一些文件”
    
    这是您想要实现的目标吗?[1] :source(“filename.rb”)如果您想在每个文件之间添加的不仅仅是-r,那么这就是我所做的,并且它可以工作。这是我如何将所有文件加载到irb中,以便访问irb中所有应用程序的内容,当然,我使用rake脚本将启动文件加载到irb中,这样我就可以
    rake irb
    并为我完成所有操作。这是我在阅读man之后的第一次尝试,但我使用了-r some_file.rb,30分钟后我找到了它并添加了它。/,感谢Ubuntu 16.04,我删除了点:
    irb-r/foo/foo.rb
    这不允许访问文件中的变量。您也可以使用
    require\u relative
    。例如,
    require.“/lib/foo”
    require\u相对的“lib/foo”相同。
    .rb
    是可选的,您可以编写
    require./ruby\u文件”。我签入了
    ruby 1.9.3p551`the./do是什么?@12它是当前目录Linux Mint的相对路径。很抱歉,我应该添加这一点。您的解决方案的结果与调用“ruby foo.rb”相同,但至少您看到了发生了什么。但是我想让控制台保持打开状态,这样我可以执行更多的命令。有什么想法吗?这似乎回答了一个问题,即如何重新加载脚本。我一直在使用
    require
    ,它似乎不会重新加载脚本(对原始源代码的任何修改都不会反映在会话中),而
    source
    似乎会反映对原始脚本的更改。
    > $: << "/directory/to/the/required/rb/file"
    > require "some_file"