aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/routing/route.rb
diff options
context:
space:
mode:
authorAndrew White <andyw@pixeltrix.co.uk>2010-06-28 00:53:36 +0100
committerJosé Valim <jose.valim@gmail.com>2010-06-28 12:25:19 +0200
commit19ccd4628c1ab4aebc00dc8d480d6cbf1688a312 (patch)
tree8bb14a8e17121d786d55f4b004b76e822edf7742 /actionpack/lib/action_dispatch/routing/route.rb
parent6d04fa6dc4865af1112c4d35a456a81008815ee7 (diff)
downloadrails-19ccd4628c1ab4aebc00dc8d480d6cbf1688a312.tar.gz
rails-19ccd4628c1ab4aebc00dc8d480d6cbf1688a312.tar.bz2
rails-19ccd4628c1ab4aebc00dc8d480d6cbf1688a312.zip
Remove invalid conditions from route [#4989 state:resolved]
Signed-off-by: José Valim <jose.valim@gmail.com>
Diffstat (limited to 'actionpack/lib/action_dispatch/routing/route.rb')
-rw-r--r--actionpack/lib/action_dispatch/routing/route.rb13
1 files changed, 11 insertions, 2 deletions
diff --git a/actionpack/lib/action_dispatch/routing/route.rb b/actionpack/lib/action_dispatch/routing/route.rb
index 6f37eadd6b..aefebf8f80 100644
--- a/actionpack/lib/action_dispatch/routing/route.rb
+++ b/actionpack/lib/action_dispatch/routing/route.rb
@@ -2,9 +2,10 @@ module ActionDispatch
module Routing
class Route #:nodoc:
attr_reader :app, :conditions, :defaults, :name
- attr_reader :path, :requirements
+ attr_reader :path, :requirements, :set
- def initialize(app, conditions, requirements, defaults, name, anchor)
+ def initialize(set, app, conditions, requirements, defaults, name, anchor)
+ @set = set
@app = app
@defaults = defaults
@name = name
@@ -24,6 +25,9 @@ module ActionDispatch
h[k] = Rack::Mount::RegexpWithNamedGroups.new(v)
h
}
+
+ @conditions.delete_if{ |k,v| k != :path_info && !valid_condition?(k) }
+ @requirements.delete_if{ |k,v| !valid_condition?(k) }
end
def verb
@@ -50,6 +54,11 @@ module ActionDispatch
"%-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)
+ end
end
end
end