[英]in ruby, how can I know what module is defined as result of a 'load' or 'require'?
[英]How can I know what Ruby standard libraries I need to explicitly require?
我一直在查看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的一個版本到另一個版本不等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.