Skip to content


Subversion checkout URL

You can clone with
Download ZIP

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also compare across forks.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also compare across forks.
base fork: myronmarston/vcr
head fork: myronmarston/vcr
Commits on Mar 03, 2012
@myronmarston Clarify a few things in the Upgrade doc. 1e1b5b0
Commits on Mar 05, 2012
@myronmarston Update limited red to version that doesn't abort if the .limited_red …
…file isn't present.
Commits on Mar 08, 2012
@myronmarston Add link to REST-assured and re-organize library links. ca6abe8
Commits on Mar 09, 2012
Omer Rauchwerger support for naming cassettes automatically according to the current s…
…cenario's name using the :use_scenario_name option when creating Cucumber tags
@myronmarston Give credit where credit's due. 0d01bfd
@myronmarston Fix ruby warnings ("useless use of == in void context").
This should hopefully make the build green again.
@myronmarston Some file systems (like linux) aren't case sensitive.
OS X is though, so this passed for me but failed on travis.
Commits on Mar 10, 2012
@myronmarston Fix another place where case-sensitivity matters on Linux. 748d6c2
Commits on Mar 13, 2012
@mislav mislav allow bundler 1.1 9e49c5b
@mislav mislav add cassette option to decode compressed response before recording
When the option is used, "gzip" and "deflate" respones are decompressed
using Zlib before recording, making the serialized data readable and


  VCR.use_cassette(:example, :decode_compressed_response => true) do
    # ...
@myronmarston Got decompress.feature to pass on 1.9.2.
- An extra line break is needed; otherwise, the appended content gets smashed against the "end" from the existing content, with no line break.
- Normalize quotes to singles ('). On 1.9.2p290 I was getting a failure because psych was serializing content length as `"43"` rather than `'43'`.
@myronmarston Use a vcr error for unknown content encoding. c1a4f55
@myronmarston Document new :decode_compressed_response option. a08448c
@myronmarston Update Changelog. a96f0aa
@myronmarston Add missing require.
Other things in VCR load this but when I ran this spec file on its own it failed because it wasn't loaded.
Commits on Mar 14, 2012
@myronmarston Lock em-http-request to version that works with WebMock 1.8.2.
em-http-request 1.0.2, just released today, breaks WebMock's em-http-request adapter.  There's a pull request to get it fixed in WebMock[1], but for now it's simplest to lock to 1.0.1.

[1] bblimke/webmock#168
@myronmarston limited_red can't install on 1.8.7 due to being build with psych. edf58a2
@myronmarston Upgrade to rspec 2.9.0rc2. 8ef5b0e
@myronmarston Get structs_spec.rb to pass on 1.8.7. 114e6bc
@myronmarston Set file type of a few cuke sections for syntax highlighting on relish. 986557c
@myronmarston Use syck since psych on 1.9.3p125 emits ASCII-8BIT strings as binary.
That was causing these scenarios to fail on travis on 1.9.3.
@myronmarston Revert "Upgrade to rspec 2.9.0rc2."
This reverts commit 8ef5b0e.

VCR's specs aren't passing on 2.9.0.rc2 :(.
@myronmarston Handle limited red not being installed. e0034eb
Commits on Mar 15, 2012
@myronmarston Re-upgrade to rspec 2.9.0.rc2.
On 2.9, metadata filter lambdas are only invoked if the named key is present in the metadata hash, so the old way we made :skip_vcr_reset work is no longer supported.
@myronmarston Upgrade to limited red 0.3.9, which fixes the 1.8.7 issues. 07ad209
Commits on Mar 16, 2012
@myronmarston Test against new webmock, excon and em-http-request releases. 4a3ed8b
Commits on Mar 19, 2012
@myronmarston Don't try to encode to a nil encoding.
This should allow cassettes recorded on 1.8 to work on 1.9.

Closes #149.
@myronmarston Update Changelog.
[ci skip]
@myronmarston Ignore rubinius artifacts. 9765851
@myronmarston Work around rubinius bug. f26ac93
Commits on Mar 23, 2012
@myronmarston We need the rubinius fix here in the cukes, too. 022a010
@myronmarston Just force encode to ASCII-8BIT.
Encoding to ASCII-8BIT is nonsensical since it just means "binary".
@myronmarston RSpec 2.9.0 is out. 4872438
@myronmarston Only uses simplecov on MRI 1.9.
Rubinius in 1.9 mode has problems with it:

@myronmarston Excon 0.13 is out and VCR works fine with it. cbacaaa
@myronmarston Travis tweaks.
- rbx 18 mode is passing consistently now.
- Don't bother with ruby head; I'm not paying attention to it and it just wastes travis resources

[ci skip]
Commits on Mar 28, 2012
@myronmarston Fix faraday middleware so that it plays back parallel requests properly. 2098a95
Commits on Mar 30, 2012
@myronmarston Remove unneeded .document file. 9c0caee
Commits on Apr 01, 2012
@ezkl ezkl Remove explicit definition of parallel_manager 835be52
Commits on Apr 02, 2012
@myronmarston Add @ezkl to list of contributors in the readme. 0714dbd
Commits on Apr 03, 2012
@myronmarston Raise a helpful message if #use_cassette is called with no block.
Previously, doing so would raise a confusing error:

  NoMethodError: undefined method `arity' for nil:NilClass
Commits on Apr 06, 2012
@myronmarston Remove unused method. 5677f88
Commits on Apr 19, 2012
@myronmarston Add link to codeclimate. b5f78ea
@myronmarston Update Changelog to reflect 2.0.1 release. 1977f87
@myronmarston Fix readme.
[ci skip]
@myronmarston 2.1.0 release.
[ci skip]
Commits on Apr 23, 2012
@myronmarston Fix :use_scenario_name option so that it works for multiple scenarios.
Closes #156.
@myronmarston Update Changelog. dbe142d
Commits on Apr 24, 2012
@myronmarston Only use the first line of the cuke feature name in the cassette name.
Closes #157.
@myronmarston Update changelog.
[ci skip]
Commits on Apr 25, 2012
@myronmarston 2.1.1 release. 4858f4e
Chris Le Refactored cassette to use a storage backend 5a7021b
@myronmarston Remove DB storage backend.
VCR's only going to provide a file system implementation of a storage backend. Any other storage backends will need to be implemented by end users.
@myronmarston Remove unused variable. f7fb0ba
@myronmarston Remove unused method. daee674
@myronmarston Use a shorter variable name. 93f3c1a
@myronmarston Use an attr_reader rather than an explicit method. ff972d1
@myronmarston Add specs for StorageBackends. 6c6a3b3
Commits on Apr 26, 2012
@myronmarston Implement FileSystem read/write interface. d44afaa
Commits on Apr 27, 2012
@myronmarston Change Cassette::Reader to Cassette::ERBRenderer.
This moves the responsibility for reading the file back into VCR::Cassette, which will pave the way for using the new storage backends.
@myronmarston Use the storage backend rather than direct file calls. 488042c
@myronmarston Rename raw_yaml_content to raw_cassette_bytes
...since other (non-yaml) serializers are supported now.
@myronmarston VCR::Configuration doesn't use fileutils anymore. ef459e4
@myronmarston Pass the cassette name to the ERBRenderer.
This allows it to use it in error messages.
@myronmarston Move the file name sanitization into the FileSystem backend.
This sanitization is designed for file names, so it belongs there.
Commits on Apr 28, 2012
@myronmarston Allow a custom storage backend to be used. fd6bbaa
@myronmarston Change :storage_backend option to :persist_with.
I like this a bit better and it lines up nicely with the :serialize_with option.
@myronmarston Add yard docs for new persister feature. 924e703
@myronmarston Fix failing cuke.
The new persist_with option gets logged.
@myronmarston Gracefully handle the case where the template is nil. c9766f5
@myronmarston Words. 7af62f4
Commits on May 01, 2012
@playupchris playupchris Modify after_http_request scenario to fail 9e2d24e
@playupchris playupchris BUGFIX for calling "to procable" filters in hooks
eg. VCR.configure.after_http_request(:stubbed?)
@myronmarston Slightly more robust fix for the after_http_request symbol filter pro…

I don't think it's the right general behavior to have hook filters only forward 1 argument to the filter when the filter uses splat args.  Symbols are a special case for after_http_request filters where we only want to forward the request argument (since they are arg-less predicate methods on the request).
@myronmarston Words.
[ci skip]
@myronmarston Cassette#file is only valid when the FileSystem persister is used. 6e1359c
Commits on May 02, 2012
@myronmarston Shift things around to make yard 0.8 happy. 3193708
@myronmarston Print out the yard coverage info (including warnings) even when the t…
…ask passes.
@myronmarston Deal with some YARD warnings. 8bc984f
@myronmarston Refactor cassette initialization. 76c1e35
@myronmarston Add link to nock.
[ci skip]
Commits on May 03, 2012
@ingemar ingemar Pass the given URI to ::FakeWeb.allow_net_connect? when VCR is turned…
… off

[fixes #160]
@myronmarston Prefer eq matcher to ==.
Using should == generates warnings.
@gordoncww gordoncww WebMock's :allow filters work now bd6a9ce
@myronmarston Words. e564ec3
Commits on May 04, 2012
@myronmarston Remove old scripts I no longer use.
[ci skip]
@myronmarston Fix/cleanup webmock spec version/adapter checking code.
It had `library` but that's an undefined variable and it was causing jruby/rbx to abort.
@myronmarston Cut rake out of rspec/cucumber for CI builds.
When something environmental fails (i.e. not in an individual spec, but when the spec files are being loaded), the rake tasks craps out but does not include the backtrace of what failed.  It's really annoying and hard to troubleshoot.  This should work better.
Commits on May 07, 2012
@myronmarston Add link to NSURLConnectionVCR.
...and re-arrange links alphabetically while I'm at it.

[ci skip]
@myronmarston Print a warning when a non-standard Faraday stack is used.
When the Faraday stack includes a middleware after the HTTP adapter it gets "first dibs" on modifying the response and thus can prevent VCR from recording the response properly.  This is a problem with the instagram gem.

For #159.
@myronmarston Raise an error if a response is recorded with an invalid body.
This can occur when a non-standard Faraday stack is used, where a response-modifying middleware comes after the HTTP adapter.

For #159.
Commits on May 11, 2012
@myronmarston Fix documentation typo. f5bb8a0
Commits on May 14, 2012
@myronmarston Relax httpclient version constraint.
This should pick up the latest, to run the build for #168.
Commits on May 23, 2012
@myronmarston Fix HTTPInteraction filtering to handle integers (e.g. port) correctly.
Previously, we would get an error:
  TypeError: can't convert Fixnum into String

Closes #167.
@myronmarston Gracefully handle a faraday stack w/ no explicit adapter.
Closes #170.
@myronmarston Update changelog. 90dacb2
Commits on May 26, 2012
@myronmarston Work around bug in WebMock's em-http-request adapter.
When the :redirects option is used with em-http-request,
WebMock's after_request hook gets invoked twice for a
single request. It appears to be doing it one for the original
request and once for the following redirect request. However,
the second time it does not actually have the new URL, and,
furthermore, the globally_stub_request hook is only invoked
once. As a result, the @__typed_vcr_request ivar has already
been removed, and we were getting nil on the second after_request
hook invocation.

Our fix is to make our WebMock library hook tolerant of the
@__typed_vcr_request hook not being present. Some things
(such as filtering an after_http_request hook based on request
type) will not work properly but the main VCR functionality can
work this way.

Closes #171.
@myronmarston Ensure our injected instance variable gets removed. aa087c1
@myronmarston Fix 1.8.7 compatibility.
- On 1.8, #instance_variables returns an array of strings.
- On 1.9, #instance_variables returns an array of symbols.
@myronmarston Remove guard...I haven't used guard in a while. ea84bfb
Commits on May 27, 2012
@myronmarston Uninstall JSON gem before running the Travis build.
Some of the VMs appear to have JSON 1.7.1 installed and it's causing weird breakage:!/myronmarston/vcr/jobs/1443136/L145
@myronmarston Work around weird rubinius issue on travis. 50c6ef5
@myronmarston Require spec support files relative to load path.
This should prevent any of them from being loaded twice as long as we use the relative form everywhere.
Commits on May 28, 2012
@myronmarston Fix cukes failing on rubinius.
Rubinius now includes some extra leading spaces on some kinds of errors, for some reason.
@myronmarston Fix failing specs on rubinius.
I'm not sure why there's this different behavior for MRI vs RBX, but this fixes it.
@myronmarston Skip some tests on JRuby that don't apply.
JRuby handles YAML and JSON a bit different from MRI.
Also, JRuby keeps #type in 1.9 mode even though MRI does not (but has it on 1.8).
@myronmarston 1.9 mode on rbx doesn't have the same serialization errors. 04ed9df
@myronmarston Rubinius 1.9 mode doesn't raise encoding errors like it should :(. f8cfae3
@myronmarston Rubinius 1.9 mode has a gzip issue, too... 42babb2
Commits on May 29, 2012
@myronmarston Allow requests to be stubbed by external libraries (e.g. WebMock or F…

Previously, direct WebMock/FakeWeb/Typhoeus stubs would be ignored
unless VCR was turned off. However, some users have requested that
VCR use these stubs if they are set. This enables that.

Part of this changes the VCR::Request::Typed interface a little bit;
#stubbed? now returns true regardless of how it was stubbed, and
#stubbed_by_vcr? should be used to test if VCR stubbed it (vs.

Note that I consider this a bit experimental. I'm not sure I've thought
through all the repercussions of this, and I consider this only
"semi supported".

Closes #146.
@tylerhunt tylerhunt Fix multipart POST requests with Faraday. cec9fe3
Commits on May 30, 2012
@myronmarston Some improvements to @tylerhunt's faraday multipart upload fix.
- Add tests.
- Move the body reading out of #vcr_request and into a helper method--
  we don't want it to happen multiple times and #vcr_request is memoized
  for a reason.
- Refactor the body reading a bit.
- Use it for the response body, too. I don't really understand it, but
  for some reason the multipart request body becomes the response body
  when no HTTP adapter is set, and due to the change I made in
  d924f66, an error was raised.

Closes #172.
@myronmarston Remove limited red...I'm not actually using it. b364c82
@myronmarston Reformat changelog.
[ci skip]
@challengee challengee Added allow_episode_skipping option notion c7a5b09
@challengee challengee Assert if a list can be stopped using properly; Custom error when req…
…uests have been skipped
@challengee challengee Renamed option; made has_unused_interactions? private; don't mix opti…
…on in with http interaction list; Added default option
Commits on May 31, 2012
@myronmarston Finish the allow_unused_http_interactions feature.
- Add cuke.
- Add #assert_no_unused_interactions! call from Cassette#eject.
- Rename error class to match option.
- Various other small fixes.
@myronmarston Update changelog.
[ci skip]
@myronmarston Make cuke tolerant of slight interpreter discrepancies.
JRuby and Rubinius print errors a bit different (e.g.
extra spacing, different placement of error class
relative to the error message w/ a multiline message).
@myronmarston Add links to other VCR ports. 9795ddb
@myronmarston 2.2.0 release. e1e0b62
Commits on Jun 05, 2012
@myronmarston Documentation fixes.
[ci skip]
Commits on Jun 07, 2012
@myronmarston A few relish fixes. 3883d50
Commits on Jun 12, 2012
@myronmarston Fix #uri_without_params so that it handles URIs w/ no query properly.
Previously, #partial_uri_from would return nil for a URI that lacked a query, which meant that it would automatically match any other URI w/o a query, even if they were wildly different.
Commits on Jun 13, 2012
@myronmarston Fix comment formatting. 26a544a
@myronmarston Add spec for consistent handling of empty body responses.
The fix for this is dependent upon pull requests I've opened
with FakeWeb, WebMock and Faraday:

- chrisk/fakeweb#32
- bblimke/webmock#190

Closes #173.
@i0rek i0rek Update Typhoeus links. be71eda
@myronmarston Merge pull request #174 from i0rek/typhoeus_links
Update Typhoeus links.
@myronmarston 2.2.1 release. 5e9dcb8
Commits on Jun 14, 2012
@myronmarston Include cassette name in error message. 819cdfb
Commits on Jun 15, 2012
@myronmarston Fix a few yard formatting issues.
[ci skip]
@myronmarston Fix VCR.eject_cassette so that it always pops the cassette off the st…

Previously, if there was an error while ejecting the cassette, the cassette would remain as the current cassette.

Closes #175.
@myronmarston 2.2.2 release. 7f03f6b
@myronmarston Add link to IRC channel. 617f02d
Commits on Jun 27, 2012
@myronmarston Excon 0.14 is out and works fine with VCR. 339bb3f
Commits on Jul 10, 2012
@myronmarston Fix typos in comments. dfda4cd
@Jacobkg Jacobkg Failing test for reusing net/http request in Fakeweb 498994a
@myronmarston Fix FakeWeb library hook for when a Net::HTTP request is re-used.
Previously I assumed a single Net::HTTP request object would only be used for a single
request. It turns out it can trivially be re-used. I've refactored the implementation to
no longer assume that. The request object was being used to hold a VCR request type
object to handle internal recursion performed by Net::HTTP; now I have a special
recursive request handler for this situation.

Closes #178.
@myronmarston No need for this global "seen request" tracking now that we're handli…
…ng Net::HTTP's recursion directly.
@myronmarston Fix uninitialized ivar warning. 460ba73
@myronmarston It's `expect { }.to`, not `expect { }.should`. 8075246
@myronmarston Update RSpec. 661450a
@myronmarston Filter out unexplainable warnings. b47858a
@myronmarston 2.2.3 release. 9b2d293
Commits on Jul 20, 2012
@myronmarston Fix excon so real requests are made with a connection constructed wit…
…h same args.

I got this warning from VCR on some tests using fog/excon to download a file from S3 over SSL:

WARNING: VCR could not extract a response from Excon error (#<OpenSSL::SSL::SSLError: hostname does not match the server certificate>)

I discovered that the SSL cert verification for a real request w/o VCR was made against
``, while the verification for the request being recorded by VCR was made
against `<bucket_name>`. The difference is due to the fact that fog
constructs an Excon::Connection instance with a URI of ``, then makes a
request with a :host param set to the FQDN. Before this commit, VCR made the real
request by constructing a new Excon::Connection instance with the URI set to the full
URI, and it caused the SSL cert verification failure.

This fixes it by ensuring the "real request" connection instance is constructed with
the same args as the original connection instance.
@myronmarston Excon 0.15 is out and works fine with VCR. ae9a0b3
@myronmarston Update relish.
I got this message from relish just now:
Sorry, your relish gem 0.5.3 is out of date. Please update to at least version 0.6
@myronmarston 2.2.4 release. 93b5f13
Commits on Jul 25, 2012
@JonathanTron JonathanTron Typhoeus 0.4.2 is out and works fine with VCR d09de03
@myronmarston Merge pull request #184 from JonathanTron/patch-1
Typhoeus 0.4.2 is out and works fine with VCR
@myronmarston Add @JonathanTron to contributors list. 12905a3
@myronmarston The new WebMock release has fixed the Net::HTTP empty body bug. d9873fb
@myronmarston Ignore rbx18-mode failures.
The travis build failed with no indication as to why:!/myronmarston/vcr/jobs/1952677/L30

..and I've often had problems with the rbx build due to rbx issues.
Commits on Aug 12, 2012
@myronmarston Relax the faraday version constraint. c5b249a
Commits on Aug 13, 2012
@myronmarston Allow jruby 18 failure.
I'm getting a weird error from Jruby:

$ script/ `cacheAndCall': java.lang.NullPointerException
82	from `call'
83	from /home/vagrant/.rvm/rubies/jruby- `__file__'
84	from /home/vagrant/.rvm/rubies/jruby- `__file__'
85	from `call'
86	from `call'
87	from `call'
88	from `interpret'
89	from `interpret'
90	from `interpret'
91	from `interpret'
93	from `call'
94	from `call'
95	from `invokedynamic'
96	from `op_ge'
97	from RubyComparable$s$1$0$op_ge.gen:65535:in `call'
98	from `cacheAndCall'
99	from `call'
100	from `call'
101	from `interpret'
102	from `interpret'
103	from `interpret'
104	from `interpret'
105	from `interpret'
106	from `interpret'
107	from `interpret'
109	from `evalBlockBody'
110	from `yield'
111	from `yield'
112	from `yield'
113	from `interpret'
114	from `interpret'
115	from `interpret'
116	from `interpret'
118	from `call'
119	from `call'
120	from `callBlock'
121	from `call'
122	from `newInstance'
123	from RubyClass$i$newInstance.gen:65535:in `call'
124	from `cacheAndCall'
125	from `callBlock'
126	from `callIter'
127	from `interpret'
128	from `interpret'
129	from `interpret'
131	from `evalWithBinding'
132	from `evalCommon'
133	from `eval'
134	from RubyKernel$s$0$3$eval.gen:65535:in `call'
135	from `call'
136	from `call'
137	from `call'
138	from `interpret'
139	from `interpret'
140	from `interpret'
141	from `interpret'
142	from `executeBody'
143	from `interpretWithJavaExceptions'
144	from `interpret'
145	from `interpret'
146	from `interpret'
147	from `interpret'
149	from `call'
150	from `call'
151	from `call'
152	from `interpret'
153	from `interpret'
154	from `interpret'
155	from `interpret'
157	from `evalBlockBody'
158	from `yield'
159	from `yield'
160	from `yield'
161	from `eachCommon'
162	from `each'
163	from RubyArray$i$0$0$each.gen:65535:in `call'
164	from `cacheAndCall'
165	from `callBlock'
166	from `callIter'
167	from `interpret'
168	from `interpret'
170	from `evalBlockBody'
171	from `yield'
172	from `yield'
173	from `yield'
174	from `eachCommon'
175	from `each'
176	from RubyArray$i$0$0$each.gen:65535:in `call'
177	from `cacheAndCall'
178	from `callBlock'
179	from `callIter'
180	from `interpret'
181	from `interpret'
182	from `interpret'
183	from `interpret'
184	from `interpret'
185	from `interpret'
187	from `call'
188	from `call'
189	from `cacheAndCall'
190	from `call'
191	from `interpret'
192	from `interpret'
193	from `interpret'
194	from `interpret'
196	from `call'
197	from `call'
198	from `finvoke'
199	from `invoke'
200	from `callEach'
201	from `selectCommon'
202	from `find_all'
203	from RubyEnumerable$s$0$0$find_all.gen:65535:in `call'
204	from `cacheAndCall'
205	from `callBlock'
206	from `callIter'
207	from `interpret'
208	from `interpret'
209	from `interpret'
210	from `interpret'
212	from `call'
213	from `call'
214	from `cacheAndCall'
215	from `call'
216	from `interpret'
217	from `interpret'
218	from `interpret'
219	from `interpret'
221	from `call'
222	from `call'
223	from `cacheAndCall'
224	from `call'
225	from `interpret'
226	from `interpret'
227	from `interpret'
228	from `interpret'
230	from `call'
231	from `call'
232	from `cacheAndCall'
233	from `call'
234	from `interpret'
235	from `interpret'
236	from `interpret'
237	from `interpret'
239	from `call'
240	from `call'
241	from `cacheAndCall'
242	from `call'
243	from /home/vagrant/.rvm/gems/jruby- `__file__'
244	from /home/vagrant/.rvm/gems/jruby- `load'
245	from `runScript'
246	from `runScript'
247	from `runNormally'
248	from `runFromMain'
249	from `doRunFromMain'
250	from `internalRun'
251	from `run'
252	from `run'
253	from `main'
255Done. Build script exited with: 1
Commits on Aug 15, 2012
@Jacobkg Jacobkg Fix for #188. Add mention of debug logging configuration option to un…
…handled request error message. Also added it to the no_cassette.feature.
@myronmarston Update changelog and readme. b93fdcd
@myronmarston Fix failing specs.
- The debug_logger note wasn't included in the error message when there is no cassette.
- The new Faraday release includes my fix for the handling of an empty response by its Net::HTTP adapter.
@myronmarston Excon 0.16 is out and works fine with VCR. d748f06
Commits on Aug 18, 2012
@myronmarston My Faraday fix was in 0.8.3 but that got yanked and it's not in 0.8.4. 93aa595
Commits on Sep 05, 2012
@myronmarston Fix excon compatibility.
We need to remove the undesirable options from the connection's instance variable params, and not simply from the params that are passed to #request.

I suspect that there might have been edge case bugs before now with the old

Fixes #193.
Commits on Sep 06, 2012
@Jacobkg Jacobkg Include scenario outline row in vcr name for scenario outlines e1465e6