# Record on Error

The `:record_on_error` flag mode will prevent a cassette from being recorded when the code that uses the cassette (a test) raises an error (test failure).

## Background ()

*Given* a file named "setup.rb" with:

```
$server = start_sinatra_app do
  get('/') { 'Hello' }
end

require 'vcr'

VCR.configure do |c|
  c.hook_into                :webmock
  c.cassette_library_dir     = 'cassettes'
end
```

## Requests are recorded when no error is raised

*Given* a file named "record\_when\_no\_error.rb" with:

```
require 'setup'

VCR.use_cassette('example', :record_on_error => false) do
  response = Net::HTTP.get_response('localhost', '/', $server.port)
  puts "Response: #{response.body}"
end
```

*When* I run `ruby record_when_no_error.rb`

*Then* it should pass with "Response: Hello"

*And* the file "cassettes/example.yml" should contain "Hello".

## Requests are not recorded when an error is raised and :record\_on\_error is set to false

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

```
require 'setup'

VCR.use_cassette('example', :record => :once, :record_on_error => false) do
  Net::HTTP.get_response('localhost', '/', $server.port)
  raise StandardError, 'The example failed'
end
```

*When* I run `ruby do_not_record_on_error.rb`

*Then* it should fail with "The example failed"

*And* the file "cassettes/example.yml" should not exist.

## Requests are recorded when an error is raised and :record\_on\_error is set to true

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

```
require 'setup'

VCR.use_cassette('example', :record => :once, :record_on_error => true) do
  Net::HTTP.get_response('localhost', '/', $server.port)
  raise StandardError, 'The example failed'
end
```

*When* I run `ruby record_on_error.rb`

*Then* it should fail with "The example failed"

*But* the file "cassettes/example.yml" should contain "Hello".


---

# 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/record-modes/record_on_error.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.
