Enhanced to support rails 2.1.0 and also allows alias method chains for recognize from other plugins still to work.
1 2 module ActionController 3 class AbstractRequest 4 attr_reader :recognized_route 5 6 def init_recognized_route_from_path_parameters 7 recognized_route = path_parameters.delete(:recognized_route) 8 end 9 end 10 11 module Routing 12 13 class RouteSet 14 def recognize_with_route(request) 15 result = recognize_without_route(request) 16 request.init_recognized_route_from_path_parameters 17 result 18 end 19 alias_method_chain :recognize, :route 20 21 def write_recognize_optimized_with_route 22 tree = segment_tree(routes) 23 body = generate_code(tree) 24 instance_eval %{ 25 def recognize_optimized(path, env) 26 segments = to_plain_segments(path) 27 index = #{body} 28 return nil unless index 29 while index < routes.size 30 result = routes[index].recognize(path, env) and result[:recognized_route] = routes[index] and return result 31 index += 1 32 end 33 nil 34 end 35 }, __FILE__, __LINE__ 36 end 37 alias_method_chain :write_recognize_optimized, :route 38 39 end 40 end 41 end 42