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遇到需求时会看到它。
这里有很好的信息,你可以获得有关require
, load
和require_relative
更多信息