aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2014-05-30 14:20:20 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2014-06-03 11:33:53 -0700
commit92d16ec158c3f45faceae799a15a319847e97516 (patch)
treead77b8504b0c936592d791b8acef75f7ecfee980 /actionpack/lib/action_dispatch
parentc0fc116fb4810e487397a5c739af7b5e0ef71e14 (diff)
downloadrails-92d16ec158c3f45faceae799a15a319847e97516.tar.gz
rails-92d16ec158c3f45faceae799a15a319847e97516.tar.bz2
rails-92d16ec158c3f45faceae799a15a319847e97516.zip
only loop over `options` once (hopefully)
Diffstat (limited to 'actionpack/lib/action_dispatch')
-rw-r--r--actionpack/lib/action_dispatch/routing/mapper.rb24
1 files changed, 11 insertions, 13 deletions
diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb
index 43b46ed0ea..cc81b23947 100644
--- a/actionpack/lib/action_dispatch/routing/mapper.rb
+++ b/actionpack/lib/action_dispatch/routing/mapper.rb
@@ -89,14 +89,15 @@ module ActionDispatch
constraints = constraints(options_constraints,
- scope[:constraints] || {})
+ (scope[:constraints] || {}),
+ path_params)
normalize_requirements!(path_params, formatted, constraints)
@conditions[:path_info] = path
@conditions[:parsed_path_info] = ast
- normalize_conditions!(path_params, path, ast, via, constraints)
+ add_request_method(via, @conditions)
normalize_defaults!(formatted, options_constraints)
end
@@ -207,15 +208,7 @@ module ActionDispatch
end
end
- def normalize_conditions!(path_params, path, ast, via, constraints)
- required_defaults = []
- options.each do |key, required_default|
- unless path_params.include?(key) || Regexp === required_default
- required_defaults << key
- end
- end
- @conditions[:required_defaults] = required_defaults
-
+ def add_request_method(via, conditions)
unless via == [:all]
if via.empty?
msg = "You should not use the `match` method in your router without specifying an HTTP method.\n" \
@@ -226,7 +219,7 @@ module ActionDispatch
raise ArgumentError, msg
end
- @conditions[:request_method] = via.map { |m| m.to_s.dasherize.upcase }
+ conditions[:request_method] = via.map { |m| m.to_s.dasherize.upcase }
end
end
@@ -309,10 +302,15 @@ module ActionDispatch
end
end
- def constraints(option_constraints, constraints)
+ def constraints(option_constraints, constraints, path_params)
+ required_defaults = []
options.each_pair do |key, option|
constraints[key] = option if Regexp === option
+ unless path_params.include?(key) || Regexp === option
+ required_defaults << key
+ end
end
+ @conditions[:required_defaults] = required_defaults
constraints.merge!(option_constraints) if option_constraints.is_a?(Hash)
constraints