3

我一直在查看 1.9.3 的Ruby 标准库文档。我想知道如何找出我需要明确要求的库。

例如,有人告诉我需要显式地要求json库,但不需要rubygems,尽管它们都出现在标准库列表中。

是否有其他地方可以查找有关要求的信息,甚至可以运行 pry/irb 命令来查看已经“需要”的内容?

4

2 回答 2

7

如果您想使用它,则必须要求/加载每个库。

性能方面,require很聪明,如果库已经加载,则不会加载它们。

但是,如果您想检查是否需要某个库,您应该查看它定义的顶级命名空间,并检查它是否在您当前的范围内定义。例如打开一个 IRB 会话并执行以下操作:

defined? JSON  # => nil (it's not loaded)
require 'json' # => true (load it)
defined? JSON  # => "constant" (it's loaded)
require 'json' # => false (it's already loaded, so it's not loaded it again)
于 2013-03-18T14:31:13.203 回答
2

无论如何,要求东西通常没有什么坏处。如果它们已经被加载,一般来说,该require语句无效。

一些核心库组件要么自动加载,要么通过引用其顶级符号自动加载。此列表因 Ruby 的一个版本而异。

于 2013-03-18T14:30:46.073 回答