method
new
rails latest stable - Class:
ActionDispatch::Routing::Route
new(set, app, conditions, requirements, defaults, name, anchor)public
No documentation available.
# File actionpack/lib/action_dispatch/routing/route.rb, line 9
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
@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] = %[^#{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