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

标签 ruby load filenames

昨天我发现,我无法使用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 时,您应该记住 loadrequire_relative 不同,它将在当前目录中查找文件,而不是在脚本所在的目录。因此,它是否找到该文件取决于调用脚本时您所在的目录。 (当然在以前的ruby版本中使用require加载本地文件也是一样)。

关于ruby - 为什么我无法使用 `load` 加载具有特定文件名的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4151033/

相关文章:

ruby-on-rails - Ruby/Rails 客户端到 HTTPS API

jquery - 使用 jQuery $.load() 后不在 DOM 中?

java - 通过文件名过滤文件选择器

c - 在C中将文件名保存在数组中

ruby - Haml - 如何将 ruby​​ 变量放入类标识符的名称中

ruby - 运行 sudo apt-get install ruby​​1.9.1-dev 会干扰 rvm 吗?

ruby-on-rails - Rails 局部 View 中的动态数据

jquery - AddLoadEvent和jQuery函数加载的区别

ajax - jquery .get 在渲染之前完全下载内容

go - Go 有文件名限制吗?