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 が追加され、元のソースが動くようになった …なっていなかった(続く)。