# Record modes

#### Scott Chamberlain

#### 2023-06-24

# Request matching

Record modes dictate under what circumstances http requests/responses are recorded to cassettes (disk). Set the recording mode with the parameter `record` in the `use_cassette()` and `insert_cassette()` functions.

## once

The `once` record mode will:

- Replay previously recorded interactions.
- Record new interactions if there is no cassette file.
- Cause an error to be raised for new requests if there is a cassette file.

It is similar to the `new_episodes` record mode, but will prevent new, unexpected requests from being made (i.e. because the request URI changed or whatever).

`once` is the default record mode, used when you do not set one.

## none

The `none` record mode will:

- Replay previously recorded interactions.
- Cause an error to be raised for any new requests.

This is useful when your code makes potentially dangerous HTTP requests. The `none` record mode guarantees that no new HTTP requests will be made.

## new_episodes

The `new_episodes` record mode will:

- Record new interactions.
- Replay previously recorded interactions.

It is similar to the `once` record mode, but will always record new interactions, even if you have an existing recorded one that is similar (but not identical, based on the `match_request_on` option).

## all

The `all` record mode will:

- Record new interactions.
- Never replay previously recorded interactions.

This can be temporarily used to force vcr to re-record a cassette (i.e. to ensure the responses are not out of date) or can be used when you simply want to log all HTTP requests.

## More documentation

Check out the http testing book for a lot more documentation on `vcr`, `webmockr`, and `crul`