Ruby要求'文件'不起作用但需要'./file'。为什么?

时间:2010-09-25 20:46:40

标签: ruby require

我有一个装满ruby文件的文件夹,当我尝试使用require 'file'在同一目录中的另一个文件时,我得到LoadError但是当我使用{{1}时一切正常。有人可以向我解释为什么会发生这种情况,如果有任何方法我可以要求文件而不在文件中添加require './file'吗?

(目录图片): alt text

3 个答案:

答案 0 :(得分:16)

如果您希望require不是来自系统$LOAD_PATH的文件,而是相对于您从 require 的文件目录,应该使用require_relative。 (正如您所看到的那样,并不完全广泛记录。)

答案 1 :(得分:3)

您的加载路径中没有当前目录。

检查$ LOAD_PATH变量的内容

答案 2 :(得分:0)

虽然它很老,但我认为一些额外的信息对初学者非常有用。

考虑require的最佳方式是与UNIX $ PATH变量相关。仅通过复习,UNIX中的$ PATH变量是可以找到可执行文件的目录列表。因此,当您在任何UNIX终端上键入程序的名称时,您的计算机将查看$ PATH变量中指定的目录中的可执行文件。要求做的事非常相似。例如,当你写下要求'设置'在Ruby文件的顶部,你告诉Ruby要查看一堆名为set.rb(Ruby&#39的集合库)的目录。

那么Ruby在哪里寻找set.rb?好吧,Ruby再一次与UNIX的$ PATH变量非常相似。它是全局变量$ LOAD_PATH,它有时也被称为丑陋和不同意的别名$ :(我不建议使用它的方式 - 虽然它可能是短暂的)。它是一个目录名称数组,当Ruby遇到需求时,它会在其中查找。

有很好的信息here,您可以在其中获取有关requireloadrequire_relative

的更多信息