Module: VCR
- Extended by:
- VCR
- Includes:
- Errors
- Included in:
- VCR
- Defined in:
- lib/vcr.rb,
lib/vcr/errors.rb,
lib/vcr/structs.rb,
lib/vcr/version.rb,
lib/vcr/cassette.rb,
lib/vcr/util/hooks.rb,
lib/vcr/util/logger.rb,
lib/vcr/deprecations.rb,
lib/vcr/configuration.rb,
lib/vcr/library_hooks.rb,
lib/vcr/linked_cassette.rb,
lib/vcr/middleware/rack.rb,
lib/vcr/request_handler.rb,
lib/vcr/request_ignorer.rb,
lib/vcr/middleware/excon.rb,
lib/vcr/cassette/migrator.rb,
lib/vcr/middleware/faraday.rb,
lib/vcr/cassette/persisters.rb,
lib/vcr/library_hooks/excon.rb,
lib/vcr/cassette/serializers.rb,
lib/vcr/util/version_checker.rb,
lib/vcr/cassette/erb_renderer.rb,
lib/vcr/library_hooks/faraday.rb,
lib/vcr/library_hooks/webmock.rb,
lib/vcr/test_frameworks/rspec.rb,
lib/vcr/library_hooks/typhoeus.rb,
lib/vcr/request_matcher_registry.rb,
lib/vcr/test_frameworks/cucumber.rb,
lib/vcr/util/internet_connection.rb,
lib/vcr/cassette/serializers/json.rb,
lib/vcr/cassette/serializers/syck.rb,
lib/vcr/cassette/serializers/yaml.rb,
lib/vcr/cassette/serializers/psych.rb,
lib/vcr/cassette/http_interaction_list.rb,
lib/vcr/cassette/persisters/file_system.rb,
lib/vcr/cassette/serializers/compressed.rb,
lib/vcr/middleware/excon/legacy_methods.rb,
lib/vcr/util/variable_args_block_caller.rb
Overview
This module is extended onto itself; thus, the methods listed here as instance methods are available directly off of VCR.
The main entry point for VCR.
Defined Under Namespace
Modules: Errors, Middleware, RSpec Classes: Cassette, Configuration, CucumberTags, HTTPInteraction, LinkedCassette, Request, RequestMatcherRegistry, Response, ResponseStatus
Constant Summary collapse
- CassetteMutex =
Mutex to synchronize access to cassettes in a threaded environment
Mutex.new
- MainThread =
The main thread in which VCR was loaded
Thread.current
Instance Method Summary collapse
-
#cassettes(context = current_context) ⇒ Enumerable
List of all cassettes currently being used.
-
#config ⇒ Object
deprecated
Deprecated.
Use #configure instead.
-
#configuration ⇒ VCR::Configuration
The VCR configuration.
-
#configure {|config| ... }
Used to configure VCR.
-
#cucumber_tags {|t| ... }
Sets up
Before
andAfter
cucumber hooks in order to use VCR with particular cucumber tags. -
#current_cassette ⇒ nil, VCR::Cassette
The currently active cassette.
-
#eject_cassette(options = {}) ⇒ VCR::Cassette?
Ejects the current cassette.
-
#insert_cassette(name, options = {}) ⇒ VCR::Cassette
Inserts the named cassette using the given cassette options.
-
#request_matchers ⇒ RequestMatcherRegistry
The request matcher registry.
-
#turn_off!(options = {})
Turns VCR off, so that it no longer handles every HTTP request.
-
#turn_on!
Turns on VCR, if it has previously been turned off.
-
#turned_off(options = {})
Turns VCR off for the duration of a block.
-
#turned_on(options = {})
Turns on VCR, for the duration of a block.
-
#turned_on? ⇒ Boolean
Whether or not VCR is turned on.
-
#use_cassette(name, options = {}) {|cassette| ... }
Inserts a cassette using the given name and options, runs the given block, and ejects the cassette.
-
#use_cassettes(cassettes, &block) ⇒ Object
Inserts multiple cassettes the given names.
-
#version ⇒ String
The current VCR version.
Instance Method Details
#cassettes(context = current_context) ⇒ Enumerable
Returns list of all cassettes currently being used.
362 363 364 365 366 367 |
# File 'lib/vcr.rb', line 362 def cassettes(context = current_context) linked_context = context[:linked_context] linked_cassettes = cassettes(linked_context) if linked_context LinkedCassette.list(context[:cassettes], Array(linked_cassettes)) end |
#config ⇒ Object
Use #configure instead.
4 5 6 7 |
# File 'lib/vcr/deprecations.rb', line 4 def config warn "WARNING: `VCR.config` is deprecated. Use VCR.configure instead." configure { |c| yield c } end |
#configuration ⇒ VCR::Configuration
Returns the VCR configuration.
239 240 241 |
# File 'lib/vcr.rb', line 239 def configuration @configuration end |
#configure {|config| ... }
This method returns an undefined value.
Used to configure VCR.
234 235 236 |
# File 'lib/vcr.rb', line 234 def configure yield configuration end |
#cucumber_tags {|t| ... }
This method returns an undefined value.
Sets up Before
and After
cucumber hooks in order to
use VCR with particular cucumber tags.
256 257 258 259 |
# File 'lib/vcr.rb', line 256 def (&block) main_object = eval('self', block.binding) yield VCR::CucumberTags.new(main_object) end |
#current_cassette ⇒ nil, VCR::Cassette
The currently active cassette.
48 49 50 |
# File 'lib/vcr.rb', line 48 def current_cassette cassettes.last end |
#eject_cassette(options = {}) ⇒ VCR::Cassette?
Ejects the current cassette. The cassette will no longer be used. In addition, any newly recorded HTTP interactions will be written to disk.
159 160 161 162 163 164 165 |
# File 'lib/vcr.rb', line 159 def eject_cassette( = {}) cassette = cassettes.last cassette.eject() if cassette cassette ensure context_cassettes.delete(cassette) end |
#insert_cassette(name, options = {}) ⇒ VCR::Cassette
If you use this method you must call eject_cassette
when you
are done. It is generally recommended that you use #use_cassette
unless your code-under-test cannot be run as a block.
Inserts the named cassette using the given cassette options.
New HTTP interactions, if allowed by the cassette's :record
option, will
be recorded to the cassette. The cassette's existing HTTP interactions
will be used to stub requests, unless prevented by the cassette's
:record
option.
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/vcr.rb', line 132 def insert_cassette(name, = {}) if turned_on? if cassettes.any? { |c| c.name == name } raise ArgumentError.new("There is already a cassette with the same name (#{name}). You cannot nest multiple cassettes with the same name.") end cassette = Cassette.new(name, ) context_cassettes.push(cassette) cassette elsif !ignore_cassettes? = "VCR is turned off. You must turn it on before you can insert a cassette. " + "Or you can use the `:ignore_cassettes => true` option to completely ignore cassette insertions." raise TurnedOffError.new() end end |
#request_matchers ⇒ RequestMatcherRegistry
Returns the request matcher registry.
357 358 359 |
# File 'lib/vcr.rb', line 357 def request_matchers @request_matchers end |
#turn_off!(options = {})
This method returns an undefined value.
Turns VCR off, so that it no longer handles every HTTP request.
290 291 292 293 294 295 296 297 298 299 300 301 302 303 |
# File 'lib/vcr.rb', line 290 def turn_off!( = {}) if VCR.current_cassette raise CassetteInUseError, "A VCR cassette is currently in use (#{VCR.current_cassette.name}). " + "You must eject it before you can turn VCR off." end set_context_value(:ignore_cassettes, .fetch(:ignore_cassettes, false)) = .keys - [:ignore_cassettes] if .any? raise ArgumentError.new("You passed some invalid options: #{.inspect}") end set_context_value(:turned_off, true) end |
#turn_on!
This method returns an undefined value.
Turns on VCR, if it has previously been turned off.
327 328 329 |
# File 'lib/vcr.rb', line 327 def turn_on! set_context_value(:turned_off, false) end |
#turned_off(options = {})
This method returns an undefined value.
Turns VCR off for the duration of a block.
270 271 272 273 274 275 276 277 278 |
# File 'lib/vcr.rb', line 270 def turned_off( = {}) turn_off!() begin yield ensure turn_on! end end |
#turned_on(options = {})
This method returns an undefined value.
Turns on VCR, for the duration of a block.
311 312 313 314 315 316 317 318 319 |
# File 'lib/vcr.rb', line 311 def turned_on( = {}) turn_on! begin yield ensure turn_off!() end end |
#turned_on? ⇒ Boolean
Normally VCR is always turned on; it will only be off if you have explicitly turned it off.
Returns whether or not VCR is turned on.
337 338 339 340 341 342 |
# File 'lib/vcr.rb', line 337 def turned_on? linked_context = current_context[:linked_context] return !linked_context[:turned_off] if linked_context !context_value(:turned_off) end |
#use_cassette(name, options = {}) {|cassette| ... }
This method returns an undefined value.
Inserts a cassette using the given name and options, runs the given block, and ejects the cassette.
184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 |
# File 'lib/vcr.rb', line 184 def use_cassette(name, = {}, &block) unless block raise ArgumentError, "`VCR.use_cassette` requires a block. " + "If you cannot wrap your code in a block, use " + "`VCR.insert_cassette` / `VCR.eject_cassette` instead." end cassette = insert_cassette(name, ) begin call_block(block, cassette) rescue StandardError cassette.run_failed! raise ensure eject_cassette end end |
#use_cassettes(cassettes, &block) ⇒ Object
Inserts multiple cassettes the given names
213 214 215 216 217 218 219 220 221 222 |
# File 'lib/vcr.rb', line 213 def use_cassettes(cassettes, &block) cassette = cassettes.pop use_cassette(cassette[:name], cassette[:options] || {}) do if cassettes.empty? block.call else use_cassettes(cassettes, &block) end end end |
#version ⇒ String
This string also has singleton methods:
major
[Integer] The major version.minor
[Integer] The minor version.patch
[Integer] The patch version.parts
[Array] List of the version parts.
Returns the current VCR version.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/vcr/version.rb', line 11 def version @version ||= begin string = +'6.1.0' def string.parts split('.').map { |p| p.to_i } end def string.major parts[0] end def string.minor parts[1] end def string.patch parts[2] end string.freeze end end |