Changelog History
Page 6
-
v1.2.0 Changes
October 13, 2010- Improved the
:all
record mode so that it keeps previously recorded interactions that do not match the new recorded interactions. Previously, all of the previously recorded interactions were deleted. - Added
:re_record_interval
cassette option. This option causes a cassette to be re-recorded when the existing file is older than the specified interval. - Improved RSpec support. Added #use_vcr_cassette RSpec macro method that sets up a cassette for an RSpec example group.
- Fixed VCR/Net::HTTP/WebMock integration so that VCR no longer loads its Net::HTTP monkey patch when WebMock is used, and relies upon WebMock's after_request callback to record Net::HTTP instead. This fixes a bug when using WebMock and Open URI.
- Consider 0.0.0.0 to be a localhost alias (previously only "localhost" and 127.0.0.1 were considered).
- Added spec and feature coverage for Curb integration. Works out of the box with no changes required to VCR due to Pete Higgins' great work to add Curb support to WebMock.
- Got specs and features to pass on rubinius.
- Changed WebMock version requirement to 1.4.0.
- Improved the
-
v1.1.2 Changes
September 09, 2010- Fixed a minor bug with the WebMock integration: WebMock extends each
Net::HTTPResponse
with an extension module after reading the body, and VCR was doing the same thing, leading to some slight deviance from standard Net::HTTP behavior. The fix prevents VCR from adding the same extension to aNet::HTTPResponse
that has already been extende by WebMock. - Fixed a minor bug in the
VCR::Net::HTTPResponse
module so that it correctly handles nil bodies (such as for a HEAD request). - Refactored
VCR::Net::HTTPResponse
module so it is implemented in a much simpler manner. - Updated specs and features so they pass against the latest WebMock release (1.3.5).
- Minor documentation updates.
- Fixed a minor bug with the WebMock integration: WebMock extends each
-
v1.1.1 Changes
August 26, 2010- Updated to use and require FakeWeb 1.3.0. It includes a fix for a bug related to multiple values for the same response header.
- Use new
FakeWeb::Utility.request_uri_as_string
method rather than our own logic to construct a request uri. - Use new
FakeWeb.allow_net_connect = /url regex/
feature to power theignore_localhost
VCR option rather then togglingFakeWeb.allow_net_connect
in our Net::HTTP extension. - Optimized
VCR.http_stubbing_adapter.stub_requests
a bit. - Changed the http stubbing adapters to be modules rather than classes. They should never be instantiated and don't really hold state, so a module is more appropriate.
- Warn when FakeWeb or WebMock are a minor or major version number ahead of the required version, as the new version isn't known to work with VCR.
-
v1.1.0 Changes
August 22, 2010- Added
:match_requests_on
cassette option, which determines how VCR matches requests. - Removed VCR::TaskRunner and the corresponding rake task definition. The rake task migrated cassettes from the 0.3.1 format to the 0.4+ format. If you are still on 0.3.1 or earlier, I recommend you upgrade to 0.4.1 first, migrate your cassettes and deal with migration warnings, then upgrade to the current release.
- Added some code to VCR::Cassette.new to check the options passed to the cassette and raise an error if any invalid options are passed.
- Optimized ERB rendering a bit. Rather than creating a new struct subclass for each time we render an ERB cassette with locals, we keep a cache of reusable struct subclasses based on the desired attributes. Benchmarking reveals this is about 28% faster.
- Upgraded tests to use em-http-request 0.2.10 rather than 0.2.7.
- Added
-
v1.0.3 Changes
August 05, 2010- Upgraded VCR specs to RSpec 2.
- Updated
VCR::CucumberTags
so that it uses anaround
hook rather than abefore
hook and anafter
hook. Around hooks were added to Cucumber in the 0.7.3 release, so you'll have to be on that version or higher to use theVCR::CucumberTags
feature. - Updated the WebMock version requirement to 1.3.3 or greater. 1.3.2 and earlier versions did not properly handle multiple value for the same response header.
- Miscellaneous documentation updates.
-
v1.0.2 Changes
July 06, 2010- Fixed VCR to work with rest-client. Rest-client extends the Net::HTTP response body string with a module containing additional data, which got serialized to the cassette file YAML and occasionally caused problems when the YAML was deserialized. Bug reported by Thibaud Guillaume-Gentil.
- Setup bundler to manage development dependencies.
-
v1.0.1 Changes
July 01, 2010- Fixed specs and features so they pass on MRI 1.9.2-preview3 and JRuby 1.5.1.
- Normalized response and request headers so that they are stored the same (i.e. lower case keys, arrays of values) in the cassette yaml files, regardless of which HTTP library is used. This is the same way Net::HTTP normalizes HTTP headers.
- Fixed
VCR.use_cassette
so that it doesn't eject a cassette if an exception occurs while inserting one. - Fixed FakeWeb adapter so that it works for requests that use basic auth. Patch submitted by Eric Allam.
-
v1.0.0 Changes
June 22, 2010New Features
- Added support for HTTPClient, Patron and em-http-request when WebMock is used. Any future http libraries WebMock supports should (theoretically, at least) work without any VCR code changes. Thanks to Bartosz Blimke for adding the necessary code to WebMock to make this happen!
- Added support for dynamic responses using ERB. A cassette will be evaluated as ERB before the YAML is deserialized if you pass it an
:erb => true
option. You can pass variables using:erb => { :var1 => 'some value', :var2 => 'another value' }
. - Added
ignore_localhost
configuration setting, which defaults to false. Setting it true does the following:- Localhost requests will proceed as normal. The "Real HTTP connections are disabled" error will not occur.
- Localhost requests will not be recorded.
- Previously recorded localhost requests will not be replayed.
- Exposed the version number:
VCR.version
=> string (in the format "major.minor.patch")VCR.version.parts
=> array of integersVCR.version.major
=> integerVCR.version.minor
=> integerVCR.version.patch
=> integer
- Added test coverage and documentation of using a regex for non-deterministic URLs (i.e. URLs that include a timestamp as a query parameter). It turns out this feature worked before, and I just didn't realize it :).
Breaking Changes
- The
:allow_real_http => lambda { |uri| ... }
cassette option has been removed. There was no way to get this to work with the newly supported http libraries without extensive monkeypatching, and it was mostly useful for localhost requests, which is more easily handled by the newignore_localhost
config setting. - Removed methods and options that had been previously deprecated. If you're upgrading from an old version, I recommend upgrading to 0.4.1 first, deal with all the deprecation warnings, then upgrade to 1.0.0.
- The
Misc Changes:
- Removed dependency on jeweler. Manage the gemspec by hand instead.
- Removed some extensions that are no longer necessary.
-
v0.4.1 Changes
May 11, 2010- Fixed a bug: when
Net::HTTPResponse#read_body
was called after VCR had read the body to record a new request, it raised an error (IOError: Net::HTTPResponse#read_body called twice
). My fix extends Net::HTTPResponse so that it no longer raises this error.
- Fixed a bug: when
-
v0.4.0 Changes
April 28, 2010Added support for webmock. All the fakeweb-specific code is now in an adapter (as is the webmock code).
Changed the format of the VCR cassettes. The old format was tied directly to Net::HTTP, but webmock supports other HTTP libraries and I plan to allow VCR to use them in the future. Note that this is a breaking change--your old VCR cassettes from prior releases will not work with VCR 0.4.0. However, VCR provides a rake task to assist you in migrating your cassettes to the new format. Simply add
load 'vcr/tasks/vcr.rake'
to your project's Rakefile, and run:$ rake vcr:migrate_cassettes DIR=path/to/cassette/library/directory
The new cassette format records more information about the request (i.e. the request headers and body), so that it can potentially be used with webmock in the future.
Made most of
VCR::Cassette
's methods private. I had forgotten to make the methods private before, and most of them don't need to be exposed.Automatically disallow http connections using the appropriate setting of the http stubbing library (fakeweb or webmock). This relieves users from the need to set the option themselves, so they hopefully aren't using either fakeweb or webmock directly, making it much easier to switch between these.
Change documentation from rdoc to markdown format.
Lots of other refactoring.