The Ruby Way

作成日: 2005-06-19
最終更新日:

本書の特徴

Ruby本の中では、もっとも理屈っぽいのではないだろうか。 理由がわかるように書いてある。また、書くべきところと書かないでおくところの区別がしっかりしている。

まだ私には1/10も理解できないが、これから理解できるようになりたい。

誤植

いわゆるTYPOは少ない。 翔泳社のページRuby Way(www.shoeisha.co.jp) にあるほかは、 下記のみである。

ページ場所
522 監注1 より探い話題 より深い話題

本文を読んでの感想

p.433 指定したURLからのWebページの取得

次のコードが紹介されている。

require "net/http"

begin
  h = Net::HTTP.new("www.ruby-lang.org", 80)
  resp, data = h.get("/en/index.html", nil)
  (中略)
end 

実際に使うときには、Net::HTTP.newに渡すホスト名と次のgetメソッドに渡すパス名は、 一緒になったURIとして指定されるだろう(少なくとも私はそう使う)。 そこで、URIをホスト部とパス部に分けることが必要だ。そのためには、URIクラスがある。 require 'uri'としておき、uri = URI.parse(uri_str)とすると、uri.host、uri.pathに、 それぞれホスト名とパス名が入る。 なお、上記の例のパス部分で、日本人ならgetメソッドの第一引数は"/ja/index.html"であろう。

ついでに、get メソッドの代わりに head メソッドも使える。このときは、戻り値は resp のみであり、data はない。 最終更新日時 (last-modified) を見るだけなら、resp を見るだけで十分である。ところが、 resp に含まれるはずの最終更新日時が入っていないタコなサーバーも残念ながらある。

本には、どのようなエラーが発生するか、という問がある。私が発見したのは次のものである。 もっとあるかもしれない。 SocketError、EOFError、Errno::ETIMEDOUT、TimeoutError

まりんきょ学問所Rubyの浮き輪 > The Ruby Way


MARUYAMA Satosi