2011-12-03 13 views
25

私は自分のことを理解したかっただけです。宝石と義務の違い(オープンが必要です)

私はnokogiri gem(HTMLの解析用)を使用しています。私がURLを開く権利を得た場合、私は宝石「open-uri」からメソッドを使用する必要があります。

しかし、私は私のGemfile(のWindows開発者のマシン上)でそれを含める:

gem 'open-uri' - バンドルは、それが宝石を見つけることができないことをインストール中にエラーがあります。

だから、もし私がrequire 'open-uri' - その働きをすれば。

何が起こっているのかを説明することができますか?

答えて

49

bundlerはあなたの宝石依存症に使用していますが、それは正しいことですが、OpenUriはRuby標準ライブラリの一部です。そのため、のみがコード内で使用したい場合は、それを必要とする必要があります。

+0

ありがとうございました。 gemfileや他の場所で 'open-uri'を要求するのが最善の場合はどこですか? – WHITECOLOR

+2

一般的には、ライブラリを使用するファイルの先頭にそれを必要とします。それがあなたを助けたら答えを受け入れてください。 – lucapette

+1

ありがとうございました! – WHITECOLOR

9

requireは、別のファイルをロードし、そのすべてのステートメントを実行するために使用されます。これは、ファイル内のすべてのクラスとメソッドの定義をインポートするのに役立ちます。 requireは、以前に必要とされたファイルを追跡し、2回実行しないようにします。

RubyGemは、一般に「gem」と呼ばれるソフトウェアパッケージです。宝石には、パッケージ化されたRubyアプリケーションまたはライブラリが含まれています。 RubyGemsソフトウェア自体で、システム上の宝石を簡単にダウンロード、インストール、操作することができます。 - What is a Gem?

Gemfileはbundlerによって使用され、指定されたgemをインストールします。

open-uriは宝石ではありませんが、Ruby標準ライブラリの一部であるため、必要なだけです。

+0

ありがとうございます。 gemfileや他の場所で 'open-uri'を要求するのが最善の場合はどこですか? – WHITECOLOR

+1

あなたが1か所でしか使用していないのであれば、私はコールの直前に、あるいはおそらく関数やファイルの始めに示唆しています。 – jlundqvist

+0

ありがとう、私はあなたの助けと時間を感謝します! – WHITECOLOR

関連する問題