diff options
-rw-r--r-- | actionpack/lib/action_dispatch/routing/route.rb | 32 | ||||
-rw-r--r-- | actionpack/lib/action_dispatch/routing/route_set.rb | 3 |
2 files changed, 7 insertions, 28 deletions
diff --git a/actionpack/lib/action_dispatch/routing/route.rb b/actionpack/lib/action_dispatch/routing/route.rb index 10b3d38346..563adb02c4 100644 --- a/actionpack/lib/action_dispatch/routing/route.rb +++ b/actionpack/lib/action_dispatch/routing/route.rb @@ -1,27 +1,12 @@ module ActionDispatch module Routing class Route #:nodoc: - attr_reader :app, :conditions, :defaults, :name - attr_reader :path, :requirements, :set + attr_reader :conditions, :path def initialize(set, app, conditions, requirements, defaults, name, anchor) @set = set - @app = app - @defaults = defaults - @name = name - - # FIXME: we should not be doing this much work in a constructor. - - @requirements = requirements.merge(defaults) - @requirements.delete(:controller) if @requirements[:controller].is_a?(Regexp) - @requirements.delete_if { |k, v| - v == Regexp.compile("[^#{SEPARATORS.join}]+") - } - - if path = conditions[:path_info] - @path = path - conditions[:path_info] = ::Rack::Mount::Strexp.compile(path, requirements, SEPARATORS, anchor) - end + path = ::Rack::Mount::Strexp.new( + conditions[:path_info], requirements, SEPARATORS, anchor) @verbs = conditions[:request_method] || [] @@ -32,9 +17,8 @@ module ActionDispatch # # Here we munge values before they get sent on to rack-mount. @conditions[:request_method] = %r[^#{verb}$] unless @verbs.empty? - @conditions[:path_info] = Rack::Mount::RegexpWithNamedGroups.new(@conditions[:path_info]) if @conditions[:path_info] + @conditions[:path_info] = Rack::Mount::RegexpWithNamedGroups.new(path) @conditions.delete_if{ |k,v| k != :path_info && !valid_condition?(k) } - @requirements.delete_if{ |k,v| !valid_condition?(k) } end def verb @@ -45,15 +29,9 @@ module ActionDispatch @segment_keys ||= conditions[:path_info].names.compact.map { |key| key.to_sym } end - def to_s - @to_s ||= begin - "%-6s %-40s %s" % [(verb || :any).to_s.upcase, path, requirements.inspect] - end - end - private def valid_condition?(method) - segment_keys.include?(method) || set.valid_conditions.include?(method) + segment_keys.include?(method) || @set.valid_conditions.include?(method) end end end diff --git a/actionpack/lib/action_dispatch/routing/route_set.rb b/actionpack/lib/action_dispatch/routing/route_set.rb index 2947eb3f09..21b720806c 100644 --- a/actionpack/lib/action_dispatch/routing/route_set.rb +++ b/actionpack/lib/action_dispatch/routing/route_set.rb @@ -346,7 +346,8 @@ module ActionDispatch def add_route(app, conditions = {}, requirements = {}, defaults = {}, name = nil, anchor = true) raise ArgumentError, "Invalid route name: '#{name}'" unless name.blank? || name.to_s.match(/^[_a-z]\w*$/i) route = Route.new(self, app, conditions, requirements, defaults, name, anchor) - route = @set.add_route(app, route.conditions, defaults, name) + path = route.conditions[:path_info] + route = @set.add_route(app, path, route.conditions, defaults, name) named_routes[name] = route if name route end |