2013-05-26 8 views
18

これらの宝石の両方が非常に似たような仕事をするようです。誰かが、ある宝石が他の宝石よりも役に立つ場所の例を挙げることはできますか?私が言及している特定のコードはありません。各宝石の一般的な使用事例についてはさらに疑問があります。私はこれが短い質問であることを知っている、私は要求に応じて空白を埋めるだろう。ありがとう。Rubyの「open-uri」と「Net:HTTP」の宝石の違いは何ですか?

+0

'open-uri'がその名前に合っていると、おそらく' http'以外のスキームを処理できることを意味します。 – fge

答えて

20

OpenURIは、Net :: HTTP、Net :: HTTPS、およびNet :: FTPのラッパーです。

通常は、より低いレベルのインターフェイスが必要と感じる場合を除き、OpenURIを使用するほうがコードが少なくて済みます。 OpenURIを使用すると、URL/URIを開いてファイルとして扱うことができます。

参照:http://www.ruby-doc.org/stdlib-1.9.3/libdoc/open-uri/rdoc/OpenURI.htmlhttp://ruby-doc.org/stdlib-1.9.3//libdoc/net/http/rdoc/Net.html

+1

ありがとうアレックス。申し訳ありませんが、「ラッパー」は何ですか? –

+9

ラッパーは、1つまたは複数の他のライブラリを使用して、より高度で高レベルのインターフェイスを作成する単なるライブラリです。この特定のケースでは、OpenURIはネットライブラリを使用して、より親しみのあるインターフェース、すなわちファイルから読み込むインターフェースを公開する。 –

3

私はちょうどopenNet::HTTPは重要な違いである、そうではない、リダイレクトに従わないことが分かりました。

たとえば、open('http://www.stackoverflow.com') { |content| puts content.read }はリダイレクト後に適切なHTMLを表示し、Net::HTTP.get(URI('http://www.stackoverflow.com'))はリダイレクトメッセージと302ステータスコードを表示します。

関連する問題