我一直在关注1.9.3的Ruby Standard Library Documentation。我想知道如何找出我需要明确要求的库。
例如,我被告知我需要明确要求json
库,而不是rubygems
,尽管它们都出现在标准库列表中。
还有另一个地方我可以查找有关要求的信息,甚至是我可以运行的pry / irb命令来查看已经“需要”的内容吗?
答案 0 :(得分: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)
答案 1 :(得分:2)
无论如何要求事情通常都没有坏处。如果它们已被加载,一般而言,require
语句无效。
某些核心库组件可以通过引用其顶级符号自动加载或自动加载。这个列表从一个版本的Ruby到另一个版本不等。