Sukoshi. Fuzoroi

某フリーPGの技術っぽいブログ。

Ruby Mechanize で セッションCookie を保存する方法

Ruby の Mechanize Ver.2.7.3 でセッションの Cookie を保存できなくてハマってました。

コードを追ったところ save_as メソッドの場合は第2引数にオプションを渡してあげればいいみたいです。

agent.cookie_jar.save_as cookie_path_or_io, {:session => true}

このsession オプションがデフォルトでは false なので、セッション関連の Cookie が保存されなかったんですね。

他にも書き出しフォーマットを変更する :format オプションもあります。

agent.cookie_jar.save_as cookie_path_or_io, {:format => :yaml}

でも他に何で書き出すんだろう…謎。

ちなみに Mechanize::CookieJar#save_as 実装自体は HTTP::CookieJar#save を使っているみたいです。

参考:Class: HTTP::CookieJar — Documentation for http-cookie (1.0.2)

さらにちなみにファイルに保存したcookieの内容を読み出すのは

agent.cookie_jar.load cookie_path_or_io

です。