HTTP ヘッダなどに記載されるクッキー文字列 str を uri に関連したクッキーとみなしてパースし、Mechanize::Cookie オブジェクトに変換してブロックへ渡します。
メソッドの返り値は Cookie オブジェクトではないので、必ずブロックを使用するようにしてください。
uri = URI.parse('http://www.example.com/')
agent = Mechanize::new
str = 'COOKIETEST=var1=value1; expires=Tue, 7-Apr-2012 00:00:00 GMT;'
Mechanize::Cookie.parse(uri, str){|c| agent.cookie_jar.add(uri, c)}
pp agent.cookie_jar.jar # 確認
# ドメインが一致するので COOKIETEST のクッキーが get 時に実際に送られる
agent.get(uri)
第 1引数 uri はクッキーが属するべき URL を Ruby 標準の URI オブジェクトで指定します。
第 2引数 str は Set-Cookie: ヘッダの値に相当するクッキー文字列です。
第 3引数 log はログ出力オブジェクトです。
Mechanize.log が有効な場合は、パースしたクッキー内容や有効期限などをパースできなかったときの警告などを書き出します。
動作の方向性的には WEBrick::parse_set_cookies(str) ですが、
- パースできないクッキー要素があった場合は agent.log に警告が出る
- 空のクッキーが連続セミコロン ;; で表現されててもパースする
- クッキーの domain 部の先頭に ./ がついていた場合は事前に除去される
- クッキーの expire 部の文字列は事前に Time.parse される
- クッキーの path 部が空だった場合、uri.path から計算される(uri.path.to_s.sub(/[^\/]*$/, ''))
- クッキーの domain 部が空だった場合、uri.host が使われる
という違いがあります。