2009-06-05 43 views
3

如果我有这样的文件夹结构:在Ruby中'不需要'不自动包含子文件夹吗?

rexml 
rexml/document 

为以下语法不是递归引用,包括它下面的一切吗?

require 'rexml' 

或者我需要编写如下,如果我也想访问什么在'document'

require 'rexml/document' 

我感到困惑的原因是我看到一些代码,其中作者写道都需要陈述一个接一个:

require 'rexml' 
require 'rexml/document' 

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

回答

11

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

6

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

相关问题