[ANN] mechanize 2.1 Released

mechanize version 2.1 has been released!

* http://mechanize.rubyforge.org
* http://github.com/tenderlove/mechanize/tree/master

The Mechanize library is used for automating interaction with websites.
Mechanize automatically stores and sends cookies, follows redirects,
can follow links, and submit forms. Form fields can be populated and
submitted. Mechanize also keeps track of the sites that you have visited as
a history.

=== 2.1 / 2011-12-20

* Deprecations
  * Mechanize#get no longer accepts an options hash.
  * Mechanize::Util::to_native_charset has been removed.

* Minor enhancements
  * Mechanize now depends on net-http-persistent 2.3+. This new version
    brings idle timeouts to help with the dreaded "too many connection resets"
    issue when POSTing to a closed connection. Issue #123
  * SSL connections will be verified against the system certificate store by
    default.
  * Added Mechanize#retry_change_requests to allow mechanize to retry POST and
    other non-idempotent requests when you know it is safe to do so. Issue
    #123
  * Mechanize can now stream files directly to disk without loading them into
    memory first through Mechanize::Download, a pluggable parser for
    downloading files.

    All responses larger than Mechanize#max_file_buffer are downloaded to a
    Tempfile. For backwards compatibility Mechanize::File subclasses still
    load the response body into memory.

    To force all unknown content types to download to disk instead of memory
    set:

      agent.pluggable_parser.default = Mechanize::Download
  * Added Mechanize#content_encoding_hooks which allow handling of
    non-standard content encodings like "agzip". Patch #125 by kitamomonga
  * Added dom_class to elements and the element matcher like dom_id. Patch
    #156 by Dan Hansen.
  * Added support for the HTML5 keygen form element. See
    http://dev.w3.org/html5/spec/Overview.html#the-keygen-element Patch #157
    by Victor Costan.
  * Mechanize no longer follows meta refreshes that have no "url=" in the
    content attribute to avoid infinite loops. To follow a meta refresh to
    the same page set Mechanize#follow_meta_refresh_self to true. Issue #134
    by Jo Hund.
  * Updated 'Mac Safari' User-Agent alias to Safari 5.1.1. 'Mac Safari 4' can
    be used for the old 'Mac Safari' alias.
  * When given multiple HTTP authentication options mechanize now picks the
    strongest method.
  * Improvements to HTTP authorization:
    * mechanize raises Mechanize::UnathorizedError for 401 responses which is
      a sublcass of Mechanize::ResponseCodeError.
    * Added support for NTLM authentication, but this has not been tested.
  * Mechanize::Cookie.new accepts attributes in a hash.
  * Mechanize::CookieJar#<<(cookie) (alias: add!) is added. Issue #139
  * Different mechanize instances may now have different loggers. Issue #122
  * Mechanize now accepts a proxy port as a service name or number string.
    Issue #167

* Bug fixes
  * Mechanize now handles cookies just as most modern browsers do,
    roughly based on RFC 6265.
    * domain=.example.com (which is invalid) is considered identical to
      domain=example.com.
    * A cookie with domain=example.com is sent to host.sub.example.com
      as well as host.example.com and example.com.
    * A cookie with domain=TLD (no dots) is accepted and sent if the
      host name is TLD, and rejected otherwise. To retain compatibility
      and convention, host/domain names starting with "local" are exempt
      from this rule.
    * A cookie with no domain attribute is only sent to the original
      host.
    * A cookie with an Effective TLD is rejected based on the public
      suffix list. (cf. http://publicsuffix.org/)
    * "Secure" cookies are not sent via non-https connection.
    * Subdomain match is not performed against an IP address.
    * It is recommended that you clear out existing cookie jars for
      regeneration because previously saved cookies may not have been
      parsed correctly.
  * Mechanize takes more care to avoid saving files with certain unsafe names.
    You should still take care not to use mechanize to save files directly
    into your home directory ($HOME). Issue #163.
  * Mechanize#cookie_jar= works again. Issue #126
  * The original Referer value persists on redirection. Issue #150
  * Do not send a referer on a Refresh header based redirection.
  * Fixed encoding error in tests when LANG=C. Patch #142 by jinschoi.
  * The order of items in a form submission now match the DOM order. Patch
    #129 by kitamomonga
  * Fixed proxy example in EXAMPLE. Issue #146 by NielsKSchjoedt