Ruby Mechanize を Windows で使う

目的:Windows でも Mechanize を使ってごにょごにょしたい!

どの Ruby を選ぶか

結論から言うと RubyInstaller for Windows を使うとうまくいった。バージョンは Ruby 1.9.3-p385 を選択。

WindowsRuby には 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.