我一直在尋找在爲1.9.3。我想知道如何找出我需要明確需要的庫。我如何知道我需要明確需要哪些Ruby標準庫?
例如,我被告知需要明確要求json
庫,但不是rubygems
,儘管它們都出現在標準庫列表中。
是否有另一個地方我可以查找關於需求的信息,甚至是pry/irb命令我可以運行以查看已經'需要'什麼?
我一直在尋找在爲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的一個版本到另一個版本有所不同。
酷 - 這正是我所期待的。謝謝! – MothOnMars 2013-03-18 14:52:56
Ruby與大多數語言一樣,擁有自動加載的類/模塊列表,無論您是否要求它們,僅僅因爲即使是一個簡單的程序,您也需要它們99%的時間。那些不需要顯式加載。簡單的方法是在開發過程中運行應用程序,Ruby會告訴你是否需要你「需要」某些東西。如果程序找不到需要的東西,地球就不會停止,只需添加該行並重新運行,直到程序正常運行。它是開發/調試周期的一部分。不要以爲你必須要求一切。 – 2013-03-18 15:34:26