为什么我在Ruby中由于需要'support / number_helper'而收到LoadError

时间:2018-10-07 13:58:49

标签: ruby

当我使用require_relative 'support/number_helper'时工作正常,但是当我使用require 'support/number_helper'时出现此错误。

rubies/ruby-2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- ./support/number_helper (LoadError)

我也尝试过,但是得到了同样的错误。

require './support/number_helper

我正在使用Ubuntu。

1 个答案:

答案 0 :(得分:1)

require_relative 'support/number_helper'通过将给定的字符串添加到current_file(__FILE__)目录中来搜索要加载的文件。例如,在您的项目文件夹中,您有2个文件:

lib/special_gem/fetcher.rb
lib/special_gem/support/number_helper.rb

您可以在第一个文件中使用require_relative 'support/number_helper'来加载第二个文件。该命令采用到当前文件目录(lib/special_gem/)的路径,附加给定的字符串(support/number_helper)并成功找到要加载的文件。

关于require命令,如果给定路径不是绝对路径,它将在$ LOAD_PATH中列出的目录中搜索文件。您的lib文件夹很可能在此列表中,因此要加载第二个文件,您可以使用命令

require 'special_gem/support/number_helper'

由于它不是相对的,因此可以从您的第1个文件或项目的其他任何文件中使用它。

使用require 'support/number_helper'时,它将在lib/support/number_helper上搜索文件。如果该文件丢失,则会引发LoadError异常。

有关详细信息,请参见the documentation