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