class ActionDispatch::Routing::Mapper::Mapping
def normalize_options!
def normalize_options! @options.reverse_merge!(scope[:options]) if scope[:options] path_without_format = path.sub(/\(\.:format\)$/, '') # Add a constraint for wildcard route to make it non-greedy and match the # optional format part of the route by default if path_without_format.match(WILDCARD_PATH) && @options[:format] != false @options[$1.to_sym] ||= /.+?/ end if path_without_format.match(':controller') raise ArgumentError, ":controller segment is not allowed within a namespace block" if scope[:module] # Add a default constraint for :controller path segments that matches namespaced # controllers with default routes like :controller/:action/:id(.:format), e.g: # GET /admin/products/show/1 # => { controller: 'admin/products', action: 'show', id: '1' } @options[:controller] ||= /.+?/ end @options.merge!(default_controller_and_action) end