class Rack::VCR

Constants

VERSION

Public Class Methods

new(app, options = {}) click to toggle source
# File lib/rack/vcr.rb, line 7
def initialize(app, options = {})
  @app = app
  @replay = options[:replay]
  @cassette = options[:cassette]
  @record   = options[:record] || :new_episodes
end

Public Instance Methods

call(env) click to toggle source
# File lib/rack/vcr.rb, line 14
def call(env)
  if @cassette
    ::VCR.use_cassette(@cassette, record: @record) do
      run_request(env)
    end
  else
    run_request(env)
  end
end
run_request(env) click to toggle source
# File lib/rack/vcr.rb, line 24
def run_request(env)
  req = Rack::Request.new(env)
  transaction = Transaction.new(req)

  if @replay && transaction.can_replay?
    transaction.replay
  else
    status, headers, body = @app.call(env)
    res = Rack::Response.new(body, status, headers)
    transaction.capture(res)
    [status, headers, body]
  end
end