class Ground::BaseRack

Attributes

env[R]
request[R]

Public Instance Methods

call(env) click to toggle source
# File lib/ground/rack/base_rack.rb, line 7
def call(env)
  start_time = Time.now
  set_request Rack::Request.new(env)

  route, state = Ground::Locate(verb: request_method, path: path_info)
  return non_exist_route if state.nil?

  params = get_params route
  response = state << {request: request, params: params}
  time = Time.now - start_time
  Ground::Log({
                time:           time,
                request_method: request_method,
                path_info:      request.env['REQUEST_PATH'],
                state:          state,
                response:       response,
                params:         params
              })
  
  response
end

Private Instance Methods

get_params(route) click to toggle source
# File lib/ground/rack/base_rack.rb, line 43
def get_params(route)
  p = {}
  path_segs = request.path_info.split('/')
  route.split('/').each_with_index {|route_seg, index|
    p[route_seg.sub(':', '')] = path_segs[index] if route_seg =~ /^:\w+/
  }
  HashWithDoubleAccess p.merge(request.params)
end
non_exist_route() click to toggle source
# File lib/ground/rack/base_rack.rb, line 52
def non_exist_route
  Rack::Response.new(["Non Exist Route: #{request_method} #{path_info}"], 500)
end
path_info() click to toggle source
# File lib/ground/rack/base_rack.rb, line 39
def path_info
  request.path_info
end
request_method() click to toggle source
# File lib/ground/rack/base_rack.rb, line 35
def request_method
  request.request_method
end
set_request(request) click to toggle source
# File lib/ground/rack/base_rack.rb, line 31
def set_request request
  @request = request
end