Class: Wouter::Wrapper

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

Overview

Wrapper class for creating single .call interface for Rack::Builder

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(routes) ⇒ Wrapper

Returns a new instance of Wrapper.



95
96
97
# File 'lib/wouter.rb', line 95

def initialize(routes)
  @routes = routes
end

Instance Attribute Details

#routesObject (readonly)

Returns the value of attribute routes.



93
94
95
# File 'lib/wouter.rb', line 93

def routes
  @routes
end

Instance Method Details

#call(env) ⇒ Object



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'lib/wouter.rb', line 99

def call(env)
  request = Rack::Request.new(env)

  route = routes.find do |r|
    matching_route?(r, request)
  end

  return not_found unless route

  path_parameters(route, request.path) do |name, value|
    request.update_param(name, value)
  end

  resp = route[:route_class].call(request.env)
  resp.finish
end