在Ruby中,有人告诉我这样做
require "some_file"
Ruby将在某些地方查找该文件。
我知道它寻找some_file.rb
,但默认情况下它在哪里寻找?
这取决于您的平台,以及Ruby的编译方式,因此没有“答案”。您可以通过运行找到:
ruby -e 'puts $:'
但是,通常,您拥有标准,站点和供应商Ruby库路径,包括每个库下的arch,version和general目录。
Ruby查找$LOAD_PATH
数组中指定的所有路径。
您还可以添加要搜索的目录,如下所示:
$LOAD_PATH.unshift File.expand_path('../path/from/this/file/to/another/directory', __FILE__)
可以通过设置RUBYLIB环境变量来指定其他路径
$ LOAD_PATH全局变量(也称为$ :)包含搜索的目录列表。
见:http://www.ruby-doc.org/core-1.9.3/Kernel.html#method-i-require
require(string)=> true或false
Ruby尝试加载名为string的库,如果成功则返回true。如果文件名未解析为绝对路径,则将在$:中列出的目录中搜索它。如果文件的扩展名为“.rb”,则将其作为源文件加载;如果扩展名是“.so”,“。o”或“.dll”,或者当前平台上的默认共享库扩展,则Ruby会将共享库作为Ruby扩展加载。否则,Ruby会尝试在名称中添加“.rb”,“。so”等。加载的功能的名称将添加到$:中的数组中。
在命令行上调用ruby
时,可以使用-I
参数提供其他搜索路径。比较输出
$ ruby -e 'puts $:'
与输出
$ ruby -I /tmp -e 'puts $:'
请注意第二个如何将/tmp
列为选项。您可以使用多个-I
添加多个路径。
你也可以和shebang一起使用:
#!/usr/bin/ruby -I /tmp -I /usr/local/lib/ruby