From 0d838c607c0c709e5190b24aff116306f4d02255 Mon Sep 17 00:00:00 2001 From: Ian Ownbey Date: Thu, 4 Dec 2008 15:36:59 -0800 Subject: Removed uri_classifier, now we just use racks --- lib/mongrel.rb | 9 ++--- lib/mongrel/uri_classifier.rb | 76 ------------------------------------------- 2 files changed, 2 insertions(+), 83 deletions(-) delete mode 100644 lib/mongrel/uri_classifier.rb (limited to 'lib') diff --git a/lib/mongrel.rb b/lib/mongrel.rb index 251e2d4..e0c2b01 100644 --- a/lib/mongrel.rb +++ b/lib/mongrel.rb @@ -24,7 +24,6 @@ require 'mongrel/cgi' require 'mongrel/handlers' require 'mongrel/command' require 'mongrel/tcphack' -require 'mongrel/uri_classifier' require 'mongrel/const' require 'mongrel/http_request' require 'mongrel/header_out' @@ -94,7 +93,6 @@ module Mongrel if defined?(Fcntl::FD_CLOEXEC) @socket.fcntl(Fcntl::F_SETFD, Fcntl::FD_CLOEXEC) end - @classifier = URIClassifier.new @host = host @port = port @workers = ThreadGroup.new @@ -134,11 +132,8 @@ module Mongrel raise "No REQUEST PATH" if not params[Const::REQUEST_PATH] - - script_name, path_info, handlers = @classifier.resolve(params[Const::REQUEST_PATH]) - - params[Const::PATH_INFO] = path_info - params[Const::SCRIPT_NAME] = script_name + params[Const::PATH_INFO] = params[Const::REQUEST_PATH] + params[Const::SCRIPT_NAME] = Const::SLASH # From http://www.ietf.org/rfc/rfc3875 : # "Script authors should be aware that the REMOTE_ADDR and REMOTE_HOST diff --git a/lib/mongrel/uri_classifier.rb b/lib/mongrel/uri_classifier.rb deleted file mode 100644 index f39ccc9..0000000 --- a/lib/mongrel/uri_classifier.rb +++ /dev/null @@ -1,76 +0,0 @@ - -module Mongrel - class URIClassifier - - class RegistrationError < RuntimeError - end - class UsageError < RuntimeError - end - - attr_reader :handler_map - - # Returns the URIs that have been registered with this classifier so far. - def uris - @handler_map.keys - end - - def initialize - @handler_map = {} - @matcher = // - @root_handler = nil - end - - # Register a handler object at a particular URI. The handler can be whatever - # you want, including an array. It's up to you what to do with it. - # - # Registering a handler is not necessarily threadsafe, so be careful if you go - # mucking around once the server is running. - def register(uri, handler) - raise RegistrationError, "#{uri.inspect} is already registered" if @handler_map[uri] - raise RegistrationError, "URI is empty" if !uri or uri.empty? - raise RegistrationError, "URI must begin with a \"#{Const::SLASH}\"" unless uri[0..0] == Const::SLASH - @handler_map[uri.dup] = handler - rebuild - end - - # Unregister a particular URI and its handler. - def unregister(uri) - handler = @handler_map.delete(uri) - raise RegistrationError, "#{uri.inspect} was not registered" unless handler - rebuild - handler - end - - # Resolve a request URI by finding the best partial match in the registered - # handler URIs. - def resolve(request_uri) - if @root_handler - # Optimization for the pathological case of only one handler on "/"; e.g. Rails - [Const::SLASH, request_uri, @root_handler] - elsif match = @matcher.match(request_uri) - uri = match.to_s - # A root mounted ("/") handler must resolve such that path info matches the original URI. - [uri, (uri == Const::SLASH ? request_uri : match.post_match), @handler_map[uri]] - else - [nil, nil, nil] - end - end - - private - - def rebuild - if @handler_map.size == 1 and @handler_map[Const::SLASH] - @root_handler = @handler_map.values.first - else - @root_handler = nil - routes = @handler_map.keys.sort.sort_by do |uri| - -uri.length - end - @matcher = Regexp.new(routes.map do |uri| - Regexp.new('^' + Regexp.escape(uri)) - end.join('|')) - end - end - - end -end \ No newline at end of file -- cgit v1.2.3-24-ge0c7