read
通常のIOクラスのように機能するRubyのStringIOモジュールからのものです。
OpenURIは、 StringIOread
クラスを介して提供します。これは、URLが読み取り可能なデバイスであると考えるように、私たちをだます方法です。
URI.join(uri).read.class
String
URLが指すサイトからページが読み取られ、コンテンツが文字列であるため、が返されます。OpenURIはURIクラスをオーバーライドし、それに追加read
します。試してみると:
require 'uri'
URI.join('http://example.com').read
OpenURIを必要としないと、URI自体がその方法を知らないため、エラーが発生しますread
。
URI.join('http://example.com')
=> #<URI::HTTP:0x0000010292de68 URL:http://example.com>
URI.join('http://example.com').read
NoMethodError: undefined method `read' for #<URI::HTTP:0x0000010218b3b8 URL:http://example.com>