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

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

(目录图片): 替代文字

如果您想要一个不是来自系统$LOAD_PATH但是相对于您require的文件目录的文件,则应使用require_relative 。 (正如您所看到的那样,并没有详细记录。)

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

检查$ LOAD_PATH变量的内容

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

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

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

这里有很好的信息,你可以获得有关requireloadrequire_relative更多信息