Cookie保存 Streamへ

http://d.hatena.ne.jp/riocampos+tech/20150324/mechanize_memo

Cookiesの保存

Cookies の永続化には Mechanize::CookieJar#save メソッドを使って YAML 形式で保存するのが一般的と思われます。ですが、この save メソッドは引数が IO かファイル名である必要があります。 Heroku などではローカルファイルが cycle 時に消えてしまいますので、このメソッドを使っても消えてしまいます。これでは役に立ちません。ということで Mechanize::CookieJar#save メソッドに StringIO インスタンスを渡すことにより Cookies を YAML 形式にした文字列に変換します。

def cookies_to_yaml_string(agent)
cookies_io_write = StringIO.new("", 'r+')
agent.cookie_jar.save(cookies_io_write)
cookies_io_write.string
end
また Mechanize::CookieJar#load メソッドで Mechanize インスタンスに Cookies をセットします。

def set_cookies(agent, cookies_yaml)
cookies_io_read = StringIO.new(cookies_yaml, 'r')
agent.cookie_jar.clear
agent.cookie_jar.load(cookies_io_read)
end