title: VCR unhandled http request error
body: <p>My specs will pass in master branch. If I create a new branch and modify some code completely unrelated to the subscriptions, they'll fail with this. The only way I can get them to pass is to change my vcr.rb to have <code>:record =&gt; :new_episodes</code>.</p>
  
  <p>If I leave that option on, then almost every time my specs run I have new modified data files for cassettes that end up being committed which really dilute the logs for Git.</p>
  
  <p>Any suggestions on how to handle this? A lot of the specs that break are based on this matcher:</p>
  
  <pre><code>  describe "#change_plan_to", vcr: {match_requests_on: [:method, :uri, :body]} do
  </code></pre>
  
  <p>Is this matcher too open to changes? I wasn't able to get the specs to pass any other way with stripe api calls.</p>
  
  <pre><code>Failure/Error: @subscription.create_stripe_customer
       VCR::Errors::UnhandledHTTPRequestError:
  
  
         ================================================================================
         An HTTP request has been made that VCR does not know how to handle:
           POST https://api.stripe.com/v1/customers
  
         VCR is currently using the following cassette:
           - /Users/app/spec/data/Subscription/_change_plan_to/stripe_customer_subscription_plan_/name/.json
           - :record =&gt; :once
           - :match_requests_on =&gt; [:method, :uri, :body]
  
         Under the current configuration VCR can not find a suitable HTTP interaction
         to replay and is prevented from recording new requests. There are a few ways
         you can deal with this:
  
           * If you're surprised VCR is raising this error
             and want insight about how VCR attempted to handle the request,
             you can use the debug_logger configuration option to log more details [1].
           * You can use the :new_episodes record mode to allow VCR to
             record this new request to the existing cassette [2].
           * If you want VCR to ignore this request (and others like it), you can
             set an `ignore_request` callback [3].
           * The current record mode (:once) does not allow new requests to be recorded
             to a previously recorded cassette. You can delete the cassette file and re-run
             your tests to allow the cassette to be recorded with this request [4].
           * The cassette contains 109 HTTP interactions that have not been
             played back. If your request is non-deterministic, you may need to
             change your :match_requests_on cassette option to be more lenient
             or use a custom request matcher to allow it to match [5].
  
         [1] https://www.relishapp.com/vcr/vcr/v/2-5-0/docs/configuration/debug-logging
         [2] https://www.relishapp.com/vcr/vcr/v/2-5-0/docs/record-modes/new-episodes
         [3] https://www.relishapp.com/vcr/vcr/v/2-5-0/docs/configuration/ignore-request
         [4] https://www.relishapp.com/vcr/vcr/v/2-5-0/docs/record-modes/once
         [5] https://www.relishapp.com/vcr/vcr/v/2-5-0/docs/request-matching
         ================================================================================
       # ./app/models/subscription.rb:83:in `create_stripe_customer'
       # ./spec/models/subscription_spec.rb:68:in `block (3 levels) in &lt;top (required)&gt;'
       # -e:1:in `&lt;main&gt;'
  </code></pre>
  
  <p>I figured out some more. The specs only break when I add a new spec to the stack. How come they break when more things are added to the suite?</p>