use a list to represent the supported verbs for a route object
This commit is contained in:
parent
9ba2d422f5
commit
9f2706d770
@ -195,8 +195,8 @@ def constraints
|
||||
|
||||
def request_method_condition
|
||||
if via = @options[:via]
|
||||
via = Array(via).map { |m| m.to_s.dasherize.upcase }
|
||||
{ :request_method => %r[^#{via.join('|')}$] }
|
||||
list = Array(via).map { |m| m.to_s.dasherize.upcase }
|
||||
{ :request_method => list }
|
||||
else
|
||||
{ }
|
||||
end
|
||||
|
@ -12,6 +12,8 @@ def initialize(set, app, conditions, requirements, defaults, name, anchor)
|
||||
@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|
|
||||
@ -23,22 +25,22 @@ def initialize(set, app, conditions, requirements, defaults, name, anchor)
|
||||
conditions[:path_info] = ::Rack::Mount::Strexp.compile(path, requirements, SEPARATORS, anchor)
|
||||
end
|
||||
|
||||
@verbs = conditions[:request_method] || []
|
||||
|
||||
@conditions = conditions.dup
|
||||
|
||||
# Rack-Mount requires that :request_method be a regular expression.
|
||||
# :request_method represents the HTTP verb that matches this route.
|
||||
#
|
||||
# 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.delete_if{ |k,v| k != :path_info && !valid_condition?(k) }
|
||||
@requirements.delete_if{ |k,v| !valid_condition?(k) }
|
||||
end
|
||||
|
||||
def verb
|
||||
if method = conditions[:request_method]
|
||||
case method
|
||||
when Regexp
|
||||
source = method.source.upcase
|
||||
source =~ /\A\^[-A-Z|]+\$\Z/ ? source[1..-2] : source
|
||||
else
|
||||
method.to_s.upcase
|
||||
end
|
||||
end
|
||||
@verbs.join '|'
|
||||
end
|
||||
|
||||
def segment_keys
|
||||
|
Loading…
Reference in New Issue
Block a user