Ruby中的'require'是否自动包含子文件夹?

时间:2009-06-05 21:50:51

标签: ruby require

如果我有这个文件夹结构:

rexml
rexml/document

以下语法不是包含其下方所有内容的递归引用吗?

require 'rexml'

如果我还想访问'document'中的内容,我是否需要编写以下内容?:

require 'rexml/document'

我感到困惑的原因是我看到一些代码,其中作者一个接一个地写了两个require语句:

require 'rexml'
require 'rexml/document'

我不确定这是否真的有必要。

2 个答案:

答案 0 :(得分:11)

Ruby的标准require只加载Ruby文件,而不是文件夹或其他任何东西。当你说“require'rexml'”时,你实际上在$:中的一个路径中“查找'rexml.rb'并加载它。”因此,“require'rexml / document'”在$:中的一个路径中的文件“rexml”中查找文件“document.rb”。

答案 1 :(得分:6)

在Ruby中,require只需要一个文件。在许多情况下,库/宝石的作者将确保该单个文件需要使用该库所需的所有其他代码,例如,请参阅these lines in the nokogiri library。然而,这可能因库而异,在REXML的情况下,您似乎需要'rexml / document'。