2010-09-25 95 views
11

我有一个文件夹满了红宝石文件,当我尝试和需要另一个文件中使用require 'file'是在同一目录下,我得到一个LoadError但是当我使用require './file'一切工作正常。谁能给我解释一下为什么出现这种情况,如果有什么办法可以要求一个文件,而无需添加./到文件?Ruby需要'文件'不起作用,但需要'./file'。为什么?

(目录中的图象): alt text

+0

的可能重复(HTTP [有什么需要\ _relative和红宝石需要区别?]://计算器。 COM /问题/ 3672586 /什么,是最差之间,需要相对-和要求,在旁注) – 2014-11-14 17:22:01

回答

16

如果你想require一个文件的内容不是从系统$LOAD_PATH,而是相对于文件的目录,你是require荷兰国际集团从,你应该使用require_relative。 (其中,正如你所看到的,并不是。)

3

您没有当前目录中的loadpath。

检查$ LOAD_PATH变量

0

虽然这是很老的帖子,但我认为一些额外的信息对初学者来说非常有用。

想要求的最佳方式是相对于UNIX $ PATH变量。通过回顾,UNIX中的$ PATH变量是可以找到可执行文件的目录列表。所以,当您在任何UNIX终端上键入程序的名称,你的电脑是希望通过在你的$ PATH变量指定的目录中的可执行文件。需求做的事情非常相似。例如,当您在Ruby文件的顶部写入require'set'时,您告诉Ruby查看一堆名为set.rb(Ruby的set库)的库的目录。

那么,这是否红宝石找set.rb?好吧,Ruby再一次与UNIX的$ PATH变量非常相似。它是全局变量$ LOAD_PATH,有时也被它的丑陋和不明确的别名$:(我不建议按照这种方式使用 - 尽管它可能是短的)来知道。它是Ruby遇到require的时候查看的目录名称数组。

有很好的信息后here那里你可以得到更多有关requireloadrequire_relative

相关问题