我有一个装满ruby文件的文件夹,当我尝试使用require 'file'
在同一目录中的另一个文件时,我得到LoadError
但是当我使用{{1}时一切正常。有人可以向我解释为什么会发生这种情况,如果有任何方法我可以要求文件而不在文件中添加require './file'
吗?
(目录图片):
答案 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,您可以在其中获取有关require
,load
和require_relative