README.md in vcr-2.0.0.rc1 vs README.md in vcr-2.0.0.rc2

- old
+ new

@@ -50,21 +50,23 @@ * [Typhoeus](https://github.com/dbalatero/typhoeus) (Typhoeus::Hydra, but not Typhoeus::Easy or Typhoeus::Multi) * [Excon](https://github.com/geemus/excon) * [Faraday](https://github.com/technoweenie/faraday) * And of course any library built on Net::HTTP, such as [Mechanize](http://github.com/tenderlove/mechanize), [HTTParty](http://github.com/jnunemaker/httparty) or [Rest Client](http://github.com/archiloque/rest-client). -* Request matching is configurable based on HTTP method, URI, host, path, body and headers. +* Request matching is configurable based on HTTP method, URI, host, path, body and headers, or you can easily + implement a custom request matcher to handle any need. * The same request can receive different responses in different tests--just use different cassettes. -* The recorded requests and responses are stored on disk as YAML and can easily be inspected and edited. +* The recorded requests and responses are stored on disk in a serialization format of your choice + (currently YAML and JSON are built in, and you can easily implement your own custom serializer) + and can easily be inspected and edited. * Dynamic responses are supported using ERB. * Automatically re-records cassettes on a configurable regular interval to keep them fresh and current. * Disables all HTTP requests that you don't explicitly allow. * Simple cucumber integration is provided using tags. -* Includes convenient RSpec macro. +* Includes convenient RSpec macro and integration with RSpec 2 metadata. * Known to work well with many popular ruby libraries including RSpec 1 & 2, Cucumber, Test::Unit, Capybara, Mechanize, Rest-Client and HTTParty. -* Extensively tested on 7 different ruby interpretters. * Includes Rack and Faraday middleware. ## Usage Browse the [documentation](http://relishapp.com/myronmarston/vcr) for usage info. @@ -85,43 +87,29 @@ VCR has been tested on the following ruby interpreters: * MRI 1.8.7 * MRI 1.9.2 * REE 1.8.7 -* JRuby 1.5.6 -* Rubinius 1.2.1 +* JRuby +* Rubinius -## Known Issues - -* VCR uses YAML to serialize the HTTP interactions to disk in a - human-readable, human-editable format. Unfortunately there are bugs - in Syck, Ruby's default YAML engine, that cause it to modify strings - when serializing them. It appears the the bug is limited to entire - lines of whitespace. A string such as `"1\n \n2"` will get changed - to `"1\n\n2"` (see [this gist](https://gist.github.com/815754) for - example code). In practice, this usually isn't so bad, but it can - occassionally cause problems, especially when the recorded - response includes a `content_length` header and you are using an - HTTP client that relies on this. Mechanize will raise an `EOFError` - when the `content_length` header does not match the response body - length. One solution is to use Psych, the new YAML engine included - in Ruby 1.9. VCR attempts to use Psych if possible, but you may have - to [re-compile ruby 1.9](http://rhnh.net/2011/01/31/psych-yaml-in-ruby-1-9-2-with-rvm-and-snow-leopard-osx) - to use it. See [this issue](https://github.com/myronmarston/vcr/issues#issue/43) - for more info. You can also use the `:update_content_length_header` - cassette option to ensure the header has the correct value. - ## Development * Source hosted on [GitHub](http://github.com/myronmarston/vcr). * Direct questions and discussions to the [mailing list](http://groups.google.com/group/vcr-ruby). * Report issues on [GitHub Issues](http://github.com/myronmarston/vcr/issues). * Pull requests are very welcome! Please include spec and/or feature coverage for every patch, and create a topic branch for every separate change you make. * See the [Contributing](https://github.com/myronmarston/vcr/blob/master/CONTRIBUTING.md) guide for instructions on running the specs and features. +* Documentation is generated with [YARD](http://yardoc.org/) ([cheat sheet](http://cheat.errtheblog.com/s/yard/)). + To generate while developing: +``` +yard server --reload +``` + If you find VCR useful, please recommend me on [working with rails](http://workingwithrails.com/person/16590-myron-marston). ## Thanks * [Aslak Hellesøy](http://github.com/aslakhellesoy) for [Cucumber](http://github.com/aslakhellesoy/cucumber). @@ -137,30 +125,37 @@ Thanks also to the following people who have contributed patches or helpful suggestions: * [Aaron Brethorst](http://github.com/aaronbrethorst) * [Avdi Grimm](https://github.com/avdi) * [Bartosz Blimke](http://github.com/bblimke) +* [Benjamin Oakes](https://github.com/benjaminoakes) * [Ben Hutton](http://github.com/benhutton) * [Bradley Isotope](https://github.com/bradleyisotope) * [Carlos Kirkconnell](https://github.com/kirkconnell) * [Eric Allam](http://github.com/rubymaverick) * [Flaviu Simihaian](https://github.com/closedbracket) +* [Jeff Pollard](https://github.com/Fluxx) * [Justin Smestad](https://github.com/jsmestad) * [Karl Baum](https://github.com/kbaum) +* [Michael Lavrisha](https://github.com/vrish88) * [Nathaniel Bibler](https://github.com/nbibler) * [Oliver Searle-Barnes](https://github.com/opsb) * [Paco Guzmán](https://github.com/pacoguzman) * [Ryan Bates](https://github.com/ryanb) * [Sathya Sekaran](https://github.com/sfsekaran) * [Wesley Beary](https://github.com/geemus) ## Similar Libraries * [Betamax](https://github.com/robfletcher/betamax) (Groovy) -* [Ephemeral Response](https://github.com/sandro/ephemeral_response) (Ruby) +* [VCR.js](https://github.com/elcuervo/vcr.js) (JavaScript) +* [TapeDeck.js](https://github.com/EndangeredMassa/TapeDeck.js) (JavaScript) * [Mimic](https://github.com/acoulton/mimic) (PHP/Kohana) +* [Ephemeral Response](https://github.com/sandro/ephemeral_response) (Ruby) +* [Net::HTTP Spy](http://github.com/martinbtt/net-http-spy) (Ruby) * [NetRecorder](https://github.com/chrisyoung/netrecorder) (Ruby) * [Stale Fish](https://github.com/jsmestad/stale_fish) (Ruby) +* [WebFixtures](http://github.com/trydionel/web_fixtures) (Ruby) ## Copyright -Copyright (c) 2010-2011 Myron Marston. See LICENSE for details. +Copyright (c) 2010-2012 Myron Marston. See LICENSE for details.