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

Mar*_*van 55 ruby require

在Ruby中,有人告诉我这样做

require "some_file"
Run Code Online (Sandbox Code Playgroud)

Ruby将在某些地方查找该文件.

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

Dan*_*man 69

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

ruby -e 'puts $:'
Run Code Online (Sandbox Code Playgroud)

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

  • 有一个"答案".$:或$ LOAD_PATH变量确实提供了搜索的地点的完整列表.你自己注意到一种简单而干净的方式来打印出来...... (4认同)
  • 啊.取决于你如何阅读这个问题:这个Ruby看起来有"回答"的答案,但是如果你运行不同的Ruby或者在不同的平台上,它会发生变化.例如:MRI 1.8.7和REE将使用不同的路径,或Darwin和Linux MRI使用微妙不同的路径.我不确定哪个,所以对这个答案感到更舒服. (2认同)
  • 这是真的,尽管我猜测提问者只是想知道如何找出负载路径是什么而不是假设它在不同平台上是恒定的. (2认同)

Bri*_*pel 25

Ruby查找$LOAD_PATH数组中指定的所有路径.

您还可以添加要搜索的目录,如下所示:

$LOAD_PATH.unshift File.expand_path('../path/from/this/file/to/another/directory', __FILE__)
Run Code Online (Sandbox Code Playgroud)


mig*_*ghq 8

可以通过设置RUBYLIB环境变量来指定其他路径


Per*_*rry 6

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

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