昨天我发现,我无法使用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
答案 0 :(得分:0)
您正在从标准库加载rss.rb。 load
首先通过$LOAD_PATH
,只有在那里找不到文件时,才会查找当前目录中的文件。
您可以通过执行load "./rss.rb"
来使其仅在当前目录中显示。
它与require_relative
一起使用的原因是require_relative
从不查看$LOAD_PATH
。
使用load
时,请注意load
与require_relative
不同,它会在当前目录中查找文件,而不是在脚本所在的目录中。因此,它是否找到该文件取决于您在调用脚本时所在的目录。 (当然,在以前的ruby版本中使用require
加载本地文件也是如此。)