Ruby Mechanize を Windows で使う
目的:Windows でも Mechanize を使ってごにょごにょしたい!
どの Ruby を選ぶか
結論から言うと RubyInstaller for Windows を使うとうまくいった。バージョンは Ruby 1.9.3-p385 を選択。
Windows 版 Ruby には MinGW 版と mswin32 版が存在していて、gem パッケージの内容が異なる。mswin32 ベースである ActiveScriptRuby は Mechanize のインストールで失敗した。
インストールした gem パッケージは次の通り。
- mechanize
- pit
- sanitize
pp はもともと含まれているようなので、あとから入れる必要はなかった。
Mechanize の動作でつまづいたところ
Mechanize で SSL を利用したページを取得しようとすると、次のようなエラーが出た。
OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
解決策は Stack Overflow ですぐ見つかった。SSL 証明書がなく、接続の安全性を確認できないためエラーになるようだ。
まず証明書ファイル cacert.pem を http://curl.haxx.se/ca からダウンロードし、適当なディレクトリに配置する。そして、Mechanize の使用時に次の指定を行う。
agent = Mechanize.new agent.agent.http.ca_file = 'C:/path/to/cacert.pem'
これでOK.