2011-12-03 51 views
25

我只是想爲自己理解。寶石和要求之間的區別(需要open-uri)

我正在使用nokogiri gem(用於解析HTML)。如果我打開URL的權利,我需要使用gem'open-uri'中的方法。

但是,當我有它在我的Gemfile(Windows 8開發者的計算機上):

gem 'open-uri' - 有一個錯誤,而捆綁安裝,它無法找到寶石。

所以,如果我使用require 'open-uri' - 它的工作。

那麼可以解釋一下怎麼回事?

回答

49

您正在使用bundler作爲您的寶石依賴項,您正在做的是正確的,但OpenUri是Ruby標準庫的一部分。這就是爲什麼你只需要需要它,如果你想在你的代碼中使用它。

+0

謝謝。在gemfile或其他地方請求最好的「open-uri」在哪裏? – WHITECOLOR

+2

通常,您應該在要使用該庫的文件的頂部要求它。如果它對你有幫助,請接受答案。 – lucapette

+1

非常感謝! – WHITECOLOR

9

require用於加載另一個文件並執行其所有語句。這用於導入文件中的所有類和方法定義。 require也會跟蹤以前需要哪些文件,因此它不會執行兩次。

RubyGem是一個軟件包,通常稱爲「寶石」。寶石包含一個打包的Ruby應用程序或庫。 RubyGems軟件本身允許您輕鬆地在系統上下載,安裝和操作寶石。 - What is a Gem?

Gemfile然後被bundler用來安裝指定的寶石。

open-uri不是寶石,而是Ruby標準庫的一部分,所以只需要它。

+0

謝謝。在gemfile或其他地方請求最好的「open-uri」在哪裏? – WHITECOLOR

+1

如果你只在一個地方使用它,我會建議在調用之前或者在函數或文件的開頭。 – jlundqvist

+0

非常感謝,感謝您的幫助和時間! – WHITECOLOR