Run this test once, and VCR will record the http request to fixtures/vcr_cassettes/synopsis.yml. Run it again, and VCR
will replay the response from iana.org when the http request is made. This test is now fast (no real HTTP requests are
made anymore), deterministic (the test will continue to pass, even if you are offline, or iana.org goes down for
maintenance) and accurate (the response will contain the same headers and body you get from a real request).

Usage

Release Policy

VCR follows the principles of semantic versioning. The cucumber features define
VCR's public API. Patch level releases contain only bug fixes. Minor
releases contain backward-compatible new features. Major new releases
contain backwards-incompatible changes to the public API.

Ruby Interpreter Compatibility

VCR has been tested on the following ruby interpreters:

MRI 1.8.6

MRI 1.8.7

MRI 1.9.1

MRI 1.9.2

REE 1.8.7

JRuby 1.5.6

Rubinius 1.2.1

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 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 to use it. See this issue
for more info. You can also use the :update_content_length_header
cassette option to ensure the header has the correct value.