Skip to content
Browse files

Fixed that Routes would raise NameErrors if a controller component co…

…ntains characters that are not valid constant names #733 [Nicholas Seckar]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@803 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent 8cddbf0 commit 630638b00e01d4046d439867a37c15cd037f6c00 @dhh dhh committed
View
2 actionpack/CHANGELOG
@@ -1,5 +1,7 @@
*SVN*
+* Fixed that Routes would raise NameErrors if a controller component contains characters that are not valid constant names #733 [Nicholas Seckar]
+
* Added PATH_INFO access from the request that allows urls like the following to be interpreted by rails: http://www.example.com/dispatcher.cgi/controller/action -- that makes it possible to use rails as a CGI under lighttpd and would also allow (for example) Rublog to be ported to rails without breaking existing links to Rublog-powered blogs. #728 [Jamis Buck]
* Fixed that caching the root would result in .html not index.html #731 [alisdair]
View
1 actionpack/lib/action_controller/routing.rb
@@ -134,6 +134,7 @@ def inspect
def eat_path_to_controller(path)
path.inject([Controllers, 1]) do |(mod, length), name|
name = name.camelize
+ return nil, nil unless /^[A-Z][_a-zA-Z\d]*$/ =~ name
controller_name = name + "Controller"
return mod.const_get(controller_name), path[length..-1] if mod.const_available? controller_name
return nil, nil unless mod.const_available? name
View
11 actionpack/test/controller/routing_tests.rb
@@ -479,6 +479,17 @@ def test_url_to_self
@request.path_parameters = {:controller => 'admin/users', :action => 'index'}
verify_generate 'admin/users', {}
end
+
+ def test_url_with_spaces_in_controller
+ @request.path = 'not%20a%20valid/controller/name'
+ @set.add_route(@rails_route) if @set.empty?
+ assert_raises(ActionController::RoutingError) {@set.recognize!(@request)}
+ end
+ def test_url_with_dots_in_controller
+ @request.path = 'not.valid/controller/name'
+ @set.add_route(@rails_route) if @set.empty?
+ assert_raises(ActionController::RoutingError) {@set.recognize!(@request)}
+ end
end
#require '../assertions/action_pack_assertions.rb'

0 comments on commit 630638b

Please sign in to comment.
Something went wrong with that request. Please try again.