默认情况下“需要”查找的路径是什么?

时间:2012-02-27 23:54:52

标签: ruby require

在Ruby中,我被告知在做

require "some_file"

Ruby会在某些地方查找该文件。

我知道它会查找some_file.rb,但默认情况下它在哪里查找?

6 个答案:

答案 0 :(得分:68)

这取决于您的平台以及Ruby的编译方式,因此没有“答案”。您可以通过运行找到:

ruby -e 'puts $:'

但是,通常,您拥有标准,站点和供应商Ruby库路径,包括每个路径下的arch,version和general目录。

答案 1 :(得分:24)

Ruby查看$LOAD_PATH数组中指定的所有路径。

您还可以像这样添加要搜索的目录:

$LOAD_PATH.unshift File.expand_path('../path/from/this/file/to/another/directory', __FILE__)

答案 2 :(得分:8)

可以通过设置RUBYLIB环境变量

来指定其他路径

答案 3 :(得分:6)

$ LOAD_PATH全局变量(也称为$ :)包含搜索的目录列表。

请参阅:http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-require

答案 4 :(得分:1)

require(string)=>真或假

Ruby尝试加载名为string的库,如果成功则返回true。如果文件名未解析为绝对路径,则将在$:中列出的目录中搜索它。如果文件的扩展名为“.rb”,则将其作为源文件加载;如果扩展名是“.so”,“。o”或“.dll”,或者当前平台上的默认共享库扩展,则Ruby会将共享库作为Ruby扩展加载。否则,Ruby会尝试在名称中添加“.rb”,“。so”等。加载的功能的名称将添加到$:。

中的数组中

答案 5 :(得分:0)

在命令行上调用<p>Click on the div below and press Enter and Shift+Enter to see the difference</p> <div id="root" contenteditable onInput="handleInput()" > </div>时,可以使用ruby参数提供其他搜索路径。比较

的输出
-I

输出为

$ ruby -e 'puts $:'

请注意第二个如何将$ ruby -I /tmp -e 'puts $:' 列为选项。您可以使用多个/tmp添加多个路径。

您也可以将其与shebang一起使用:

-I