# Default Cassette Options

The `default_cassette_options` configuration option takes a hash that provides defaults for each cassette you use. Any cassette can override the defaults as well as set additional options.

The `:match_requests_on` option defaults to `[:method, :uri]` when it has not been set.

The `:record` option defaults to `:once` when it has not been set.

## Background ()

*Given* a file named "vcr\_setup.rb" with:

```
require 'vcr'

VCR.configure do |c|
  c.default_cassette_options = { :record => :new_episodes, :erb => true }

  # not important for this example, but must be set to something
  c.hook_into :webmock
  c.cassette_library_dir = 'cassettes'
end
```

## cassettes get default values from configured `default_cassette_options`

*Given* a file named "default\_cassette\_options.rb" with:

```
require 'vcr_setup.rb'

VCR.use_cassette('example') do
  puts "Record Mode: #{VCR.current_cassette.record_mode}"
  puts "ERB: #{VCR.current_cassette.erb}"
end
```

*When* I run `ruby default_cassette_options.rb`

*Then* the output should contain:

```
Record Mode: new_episodes
ERB: true
```

## `:match_requests_on` defaults to `[:method, :uri]` when it has not been set

*Given* a file named "default\_cassette\_options.rb" with:

```
require 'vcr_setup.rb'

VCR.use_cassette('example') do
  puts "Match Requests On: #{VCR.current_cassette.match_requests_on.inspect}"
end
```

*When* I run `ruby default_cassette_options.rb`

*Then* the output should contain "Match Requests On: \[:method, :uri]".

## `:record` defaults to `:once` when it has not been set

*Given* a file named "default\_record\_mode.rb" with:

```
require 'vcr'

VCR.configure do |c|
  # not important for this example, but must be set to something
  c.hook_into :webmock
  c.cassette_library_dir = 'cassettes'
end

VCR.use_cassette('example') do
  puts "Record mode: #{VCR.current_cassette.record_mode.inspect}"
end
```

*When* I run `ruby default_record_mode.rb`

*Then* the output should contain "Record mode: :once".

## `:record_on_error` defaults to `true` when it has not been set

*Given* a file named "default\_record\_on\_error.rb" with:

```
require 'vcr'

VCR.configure do |c|
  # not important for this example, but must be set to something
  c.hook_into :webmock
  c.cassette_library_dir = 'cassettes'
end

VCR.use_cassette('example') do
  puts "Record on error: #{VCR.current_cassette.record_on_error}"
end
```

*When* I run `ruby default_record_on_error.rb`

*Then* the output should contain "Record on error: true".

## cassettes can set their own options

*Given* a file named "default\_cassette\_options.rb" with:

```
require 'vcr_setup.rb'

VCR.use_cassette('example', :re_record_interval => 10000) do
  puts "Re-record Interval: #{VCR.current_cassette.re_record_interval}"
end
```

*When* I run `ruby default_cassette_options.rb`

*Then* the output should contain "Re-record Interval: 10000".

## cassettes can override default options

*Given* a file named "default\_cassette\_options.rb" with:

```
require 'vcr_setup.rb'

VCR.use_cassette('example', :record => :none, :erb => false) do
  puts "Record Mode: #{VCR.current_cassette.record_mode}"
  puts "ERB: #{VCR.current_cassette.erb}"
end
```

*When* I run `ruby default_cassette_options.rb`

*Then* the output should contain:

```
Record Mode: none
ERB: false
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://nicolasiensen.gitbook.io/vcr/v-5.1.0/configuration/default_cassette_options.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
