class ASeriesOfTubes::Tubes::Tube

Attributes

action[R]
controller[R]
method[R]
pattern[R]

Public Class Methods

new(pattern, method, controller, action) click to toggle source
# File lib/a_series_of_tubes/tubes/tube.rb, line 6
def initialize pattern, method, controller, action
  @pattern    = pattern
  @method     = method.to_s.upcase
  @controller = controller
  @action     = action
end

Public Instance Methods

matches?(request) click to toggle source
# File lib/a_series_of_tubes/tubes/tube.rb, line 13
def matches? request
  self.pattern =~ request.path && request.request_method == self.method
end
run(request, response) click to toggle source
# File lib/a_series_of_tubes/tubes/tube.rb, line 17
def run request, response
  params = parse_params_from_path request.path
  controller = self.controller.new request, response, params
  controller.invoke_action action
end

Private Instance Methods

parse_params_from_path(path) click to toggle source
# File lib/a_series_of_tubes/tubes/tube.rb, line 25
def parse_params_from_path path
  params = {}
  matches = self.pattern.match path

  matches.names.each { |key| params[key] = matches[key] }
  params
end