为什么我无法使用`load`加载具有特定文件名的脚本?

时间:2010-11-11 03:00:45

标签: ruby load filenames

昨天我发现,我无法使用rss.rb重新加载我的脚本load。它只为我做了几秒未知的事情,返回true并且不执行脚本。但它可以使用require_relative加载(一次)没有问题。我不得不重命名脚本文件,按照我的意愿使用它 为什么require_relative有效,但load却没有?如何知道哪些文件名无法加载load
我正在使用 ruby​​ 1.9.2p0(2010-08-18)[i386-mingw32]

UPD:

C:> type 1.rb
p load 'rss.rb'
p load '2.rb'

C:> type rss.rb p 'rss.rb loaded'
C:> type 2.rb p '2.rb loaded'
C:> ruby 1.rb true "2.rb loaded" true

1 个答案:

答案 0 :(得分:0)

您正在从标准库加载rss.rb。 load首先通过$LOAD_PATH,只有在那里找不到文件时,才会查找当前目录中的文件。

您可以通过执行load "./rss.rb"来使其仅在当前目录中显示。

它与require_relative一起使用的原因是require_relative从不查看$LOAD_PATH

使用load时,请注意loadrequire_relative不同,它会在当前目录中查找文件,而不是在脚本所在的目录中。因此,它是否找到该文件取决于您在调用脚本时所在的目录。 (当然,在以前的ruby版本中使用require加载本地文件也是如此。)