【问题标题】:Ruby require 'file' doesn't work but require './file' does. Why?Ruby require 'file' 不起作用,但 require './file' 可以。为什么?
【发布时间】:2011-04-17 06:25:24
【问题描述】:

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

(目录图片):

【问题讨论】:

标签: ruby require


【解决方案1】:

如果你想require 一个不是来自系统$LOAD_PATH 而是相对于你是requireing 来自 的文件目录的文件,你应该使用require_relative。 (如您所见,这并没有完全广泛记录。)

【讨论】:

    【解决方案2】:

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

    检查 $LOAD_PATH 变量的内容

    【讨论】:

      【解决方案3】:

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

      认为 require 的最佳方式是与 UNIX $PATH 变量相关。回顾一下,UNIX 中的 $PATH 变量是可以找到可执行文件的目录列表。因此,当您在任何 UNIX 终端上键入程序的名称时,您的计算机正在查看 $PATH 变量中指定的目录中的可执行文件。 require 做了一些非常相似的事情。例如,当您在 Ruby 文件的顶部编写 require 'set' 时,您是在告诉 Ruby 在一堆目录中查找一个名为 set.rb(Ruby 的 set 库)的库。

      那么 Ruby 在哪里寻找 set.rb?好吧,再一次,Ruby 有一些与 UNIX 的 $PATH 变量非常相似的东西。它是全局变量 $LOAD_PATH 有时也因其丑陋且难以描述的别名 $: 而闻名(我不建议顺便使用它——尽管它可能很短)。它是 Ruby 遇到 require 时查找的目录名称数组。

      有一个很好的信息帖子here,您可以在其中获得有关requireloadrequire_relative 的更多信息

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-10
        • 2019-12-18
        • 2013-08-18
        • 1970-01-01
        • 2018-01-13
        • 2022-08-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多