at posts/single.html

open-uri で HTTPS

Debian 3.1 + Ruby 1.8 の環境での話。 少し引っかかったのでメモしておく。

open-uri を使って、SSL を使った HTTPS のサイトからコンテンツを取得しようとしたらエラーになった。

open("https://www.typekey.com/t/typekey") {|f|
  f.each_line {|line| p line}
}
/usr/lib/ruby/1.8/open-uri.rb:233:in `require':
no such file to load -- net/https (LoadError)

確かに、 /usr/lib/ruby/1.8/ には net/http.rb はあるけど net/https.rb はない。 どこで手に入るんだろうと悩んだけど、結局 libopenssl-ruby というパッケージに含まれていることが分かった。 どうやって分かったかというと…

  • 「apt-get source ruby」でソースコードを入手
  • ソースコードを展開し「find -name https.rb -print」で検索
  • 「./ruby-1.8.2/ext/openssl/lib/net/https.rb」にソースがあることから、OpenSSL 関連のパッケージになっていると推測
  • 「apt-cache search ruby | grep ssl」でパッケージ名を検索
  • 「apt-get install libopenssl-ruby」でパッケージをインストール

という手順。もっと簡単な方法があるかも。

この手順で net/https.rb が追加され、元のソースが動くようになった …なっていなかった(続く)。

関連する日記