aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/routing
diff options
context:
space:
mode:
authorJoshua Peek <josh@joshpeek.com>2009-12-26 12:43:50 -0600
committerJoshua Peek <josh@joshpeek.com>2009-12-26 13:25:36 -0600
commit673fa7f06608151aa4a5e6e754894978b4000b63 (patch)
tree56878ae1934d10c0711c7ef37dd9a51179140101 /actionpack/lib/action_dispatch/routing
parentf53c36350d46a27f4859d82b07e48528fa4f2c74 (diff)
downloadrails-673fa7f06608151aa4a5e6e754894978b4000b63.tar.gz
rails-673fa7f06608151aa4a5e6e754894978b4000b63.tar.bz2
rails-673fa7f06608151aa4a5e6e754894978b4000b63.zip
rack-mount 0.4
Diffstat (limited to 'actionpack/lib/action_dispatch/routing')
-rw-r--r--actionpack/lib/action_dispatch/routing/mapper.rb38
-rw-r--r--actionpack/lib/action_dispatch/routing/route_set.rb2
2 files changed, 20 insertions, 20 deletions
diff --git a/actionpack/lib/action_dispatch/routing/mapper.rb b/actionpack/lib/action_dispatch/routing/mapper.rb
index b48fc6edc5..e655d6a708 100644
--- a/actionpack/lib/action_dispatch/routing/mapper.rb
+++ b/actionpack/lib/action_dispatch/routing/mapper.rb
@@ -19,9 +19,9 @@ module ActionDispatch
@constraints.each { |constraint|
if constraint.respond_to?(:matches?) && !constraint.matches?(req)
- return [ 417, {}, [] ]
+ return [ 404, {'X-Cascade' => 'pass'}, [] ]
elsif constraint.respond_to?(:call) && !constraint.call(req)
- return [ 417, {}, [] ]
+ return [ 404, {'X-Cascade' => 'pass'}, [] ]
end
}
@@ -34,11 +34,11 @@ module ActionDispatch
@set, @scope = set, scope
@path, @options = extract_path_and_options(args)
end
-
+
def to_route
[ app, conditions, requirements, defaults, @options[:as] ]
end
-
+
private
def extract_path_and_options(args)
options = args.extract_options!
@@ -49,18 +49,18 @@ module ActionDispatch
else
path = args.first
end
-
+
[ normalize_path(path), options ]
end
def normalize_path(path)
path = nil if path == ""
path = "#{@scope[:path]}#{path}" if @scope[:path]
- path = Rack::Mount::Utils.normalize_path(path) if path
+ path = Rack::Mount::Utils.normalize_path(path) if path
raise ArgumentError, "path is required" unless path
-
- path
+
+ path
end
@@ -74,7 +74,7 @@ module ActionDispatch
def conditions
{ :path_info => @path }.merge(constraints).merge(request_method_condition)
end
-
+
def requirements
@requirements ||= returning(@options[:constraints] || {}) do |requirements|
requirements.reverse_merge!(@scope[:constraints]) if @scope[:constraints]
@@ -96,30 +96,30 @@ module ActionDispatch
else
default_controller ? { :controller => default_controller } : {}
end
-
+
if defaults[:controller].blank? && segment_keys.exclude?("controller")
raise ArgumentError, "missing :controller"
end
-
+
if defaults[:action].blank? && segment_keys.exclude?("action")
raise ArgumentError, "missing :action"
end
-
+
defaults
end
end
-
+
def blocks
if @options[:constraints].present? && !@options[:constraints].is_a?(Hash)
block = @options[:constraints]
else
block = nil
end
-
- ((@scope[:blocks] || []) + [ block ]).compact
+
+ ((@scope[:blocks] || []) + [ block ]).compact
end
-
+
def constraints
@constraints ||= requirements.reject { |k, v| segment_keys.include?(k.to_s) || k == :controller }
end
@@ -132,7 +132,7 @@ module ActionDispatch
{ }
end
end
-
+
def segment_keys
@segment_keys ||= Rack::Mount::RegexpWithNamedGroups.new(
Rack::Mount::Strexp.compile(@path, requirements, SEPARATORS)
@@ -142,7 +142,7 @@ module ActionDispatch
def to
@options[:to]
end
-
+
def default_controller
@scope[:controller].to_s if @scope[:controller]
end
@@ -520,4 +520,4 @@ module ActionDispatch
include Resources
end
end
-end \ No newline at end of file
+end
diff --git a/actionpack/lib/action_dispatch/routing/route_set.rb b/actionpack/lib/action_dispatch/routing/route_set.rb
index 498ad3268c..bd397432ce 100644
--- a/actionpack/lib/action_dispatch/routing/route_set.rb
+++ b/actionpack/lib/action_dispatch/routing/route_set.rb
@@ -21,7 +21,7 @@ module ActionDispatch
prepare_params!(params)
unless controller = controller(params)
- return [417, {}, []]
+ return [404, {'X-Cascade' => 'pass'}, []]
end
controller.action(params[:action]).call(env)