Class: Rack::Recorder

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/recorder.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app, options) ⇒ Recorder

Returns a new instance of Recorder.



6
7
8
9
10
# File 'lib/rack/recorder.rb', line 6

def initialize(app, options)
  @app = app
  @file = options[:file] or raise "must pass :file argument to Rack::Recorder"
  @all_requests = []
end

Class Method Details

.revive(test_file) ⇒ Object



29
30
31
# File 'lib/rack/recorder.rb', line 29

def self.revive(test_file)
  ::File.open(test_file, 'r') { |f| Marshal.load(f) }
end

Instance Method Details

#call(env) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/rack/recorder.rb', line 12

def call env
  req = Rack::Request.new(env)
  request =  {:method => req.request_method, :body => req.body.read, :url => req.url }
  req.body.rewind if req.body
  status, ctype, body =  @app.call env
     
  response = {:status => status, :content_type => ctype['Content-Type']}
  if body
    response[:body] = body.read
    body.rewind
  end

  @all_requests << { :request => request, :response => response }
  ::File.open(@file, "w") { |f| Marshal.dump(@all_requests , f) }
  [status,ctype,body]
end