Parent

Included Modules

Thin::Stats::Adapter

Rack adapter to log stats about a Rack application.

Public Class Methods

new(app, path='/stats') click to toggle source
# File lib/thin/stats.rb, line 9
def initialize(app, path='/stats')
  @app  = app
  @path = path

  @template = ERB.new(File.read(File.dirname(__FILE__) + '/stats.html.erb'))
  
  @requests          = 0
  @requests_finished = 0
  @start_time        = Time.now
end

Public Instance Methods

call(env) click to toggle source
# File lib/thin/stats.rb, line 20
def call(env)
  if env['PATH_INFO'].index(@path) == 0
    serve(env)
  else
    log(env) { @app.call(env) }
  end
end
log(env) click to toggle source
# File lib/thin/stats.rb, line 28
def log(env)
  @requests += 1
  @last_request = Rack::Request.new(env)
  request_started_at = Time.now
  
  response = yield
  
  @requests_finished += 1
  @last_request_time = Time.now - request_started_at
  
  response
end
serve(env) click to toggle source
# File lib/thin/stats.rb, line 41
def serve(env)
  body = @template.result(binding)
  
  [
    200,
    { 'Content-Type' => 'text/html' },
    [body]
  ]
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.