class VCR::Middleware::Rack

@note This will record/replay outbound HTTP requests made by your rack app.
end
run MyRackApp
end
cassette.options :record => :new_episodes
cassette.name “rack/#{env}”
use VCR::Middleware::Rack do |cassette, env|
app = Rack::Builder.new do
@example
Rack middleware that uses a VCR cassette for each incoming HTTP request.

def call(env)

Returns:
  • (Array(Integer, Hash, #each)) - the rack response

Parameters:
  • env (Hash) -- the rack env hash
def call(env)
  @mutex.synchronize do
    VCR.use_cassette(*cassette_arguments(env)) do
      @app.call(env)
    end
  end
end

def cassette_arguments(env)

def cassette_arguments(env)
  arguments = CassetteArguments.new
  call_block(@cassette_arguments_block, arguments, env)
  [arguments.name, arguments.options]
end

def initialize(app, &block)

Raises:
  • (ArgumentError) - if no configuration block is provided

Other tags:
    Yieldparam: env - the rack env hash
    Yieldparam: cassette - the cassette configuration object

Other tags:
    Yield: - the cassette configuration block

Parameters:
  • app (#call) -- the rack app
def initialize(app, &block)
  raise ArgumentError.new("You must provide a block to set the cassette options") unless block
  @app, @cassette_arguments_block, @mutex = app, block, Mutex.new
end