昨天我发现,我无法使用load
重新加载我的脚本rss.rb
。它只做几秒钟对我来说未知的事情,返回 true
并且不执行脚本。但是使用 require_relative
可以毫无问题地加载它(一次)。我不得不重命名脚本文件,以便按我的需要使用它。
那么,为什么 require_relative
有效,而 load
却无效?以及如何知道哪些文件名不能用 load
加载?
我正在使用 ruby 1.9.2p0 (2010-08-18) [i386-mingw32]
更新:
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
最佳答案
您正在从标准库加载 rss.rb。 load
首先通过 $LOAD_PATH
并且仅当在那里找不到文件时,才会在当前目录中查找文件。
您可以通过执行 load "./rss.rb"
使其只在当前目录中查找。
它与 require_relative
一起工作的原因是 require_relative
从不查看 $LOAD_PATH
。
当使用 load
时,您应该记住 load
与 require_relative
不同,它将在当前目录中查找文件,而不是在脚本所在的目录。因此,它是否找到该文件取决于调用脚本时您所在的目录。 (当然在以前的ruby版本中使用require
加载本地文件也是一样)。
关于ruby - 为什么我无法使用 `load` 加载具有特定文件名的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4151033/