我怎么知道我需要明确要求的Ruby标准库?

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

例如,我被告知我需要明确要求json库,但不要求rubygems ,尽管它们都出现在标准库列表中。

还有另一个地方我可以查找有关要求的信息,甚至是我可以运行的pry / irb命令来查看已经“需要”的内容吗?

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

性能方面, 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) 

无论如何要求事情通常都没有坏处。 如果它们已经被加载,一般而言, require语句无效。

某些核心库组件可以通过引用其顶级符号自动加载或自动加载。 这个列表从Ruby的一个版本到另一个版本不等。