class Sanford::Route

Attributes

handler_class[R]
handler_class_name[R]
name[R]

Public Class Methods

new(name, handler_class_name) click to toggle source
# File lib/sanford/route.rb, line 9
def initialize(name, handler_class_name)
  @name = name.to_s
  @handler_class_name = handler_class_name
  @handler_class = nil
end

Public Instance Methods

run(request, server_data) click to toggle source
# File lib/sanford/route.rb, line 19
def run(request, server_data)
  SanfordRunner.new(self.handler_class, {
    :request => request,
    :params  => request.params,
    :logger  => server_data.logger,
    :router  => server_data.router,
    :template_source => server_data.template_source
  }).run
end
validate!() click to toggle source
# File lib/sanford/route.rb, line 15
def validate!
  @handler_class = constantize_handler_class(@handler_class_name)
end

Private Instance Methods

constantize(class_name) click to toggle source
# File lib/sanford/route.rb, line 37
def constantize(class_name)
  names = class_name.to_s.split('::').reject{ |name| name.empty? }
  klass = names.inject(Object){ |constant, name| constant.const_get(name) }
  klass == Object ? false : klass
rescue NameError
  false
end
constantize_handler_class(handler_class_name) click to toggle source
# File lib/sanford/route.rb, line 31
def constantize_handler_class(handler_class_name)
  constantize(handler_class_name).tap do |handler_class|
    raise(NoHandlerClassError.new(handler_class_name)) if !handler_class
  end
end