aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2004-12-14 12:58:25 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2004-12-14 12:58:25 +0000
commite5a8d8ebbbb21dcd05d98d055dd0f75da972543e (patch)
tree4440a071fe5d053b983f329a2a1ece58ec3298d2 /railties
parent605bc77533cf3b6700e91eda8994cdf6b82341cc (diff)
downloadrails-e5a8d8ebbbb21dcd05d98d055dd0f75da972543e.tar.gz
rails-e5a8d8ebbbb21dcd05d98d055dd0f75da972543e.tar.bz2
rails-e5a8d8ebbbb21dcd05d98d055dd0f75da972543e.zip
This patch allows urls to be of the form :module/:controller/:action as well as :controller/:action/:id where :id is no entirely numeric by determining if what would be :module corresponds to a directory in app/controllers. If it does not then the :controller/:action/:id scheme is used.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@150 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'railties')
-rw-r--r--railties/lib/webrick_server.rb11
1 files changed, 10 insertions, 1 deletions
diff --git a/railties/lib/webrick_server.rb b/railties/lib/webrick_server.rb
index eee0bd90c2..318d9eb932 100644
--- a/railties/lib/webrick_server.rb
+++ b/railties/lib/webrick_server.rb
@@ -136,11 +136,20 @@ class DispatchServlet < WEBrick::HTTPServlet::AbstractServlet
when %r{^/#{component}/#{component}/$} then
{ :module => $1, :controller => $2, :action => "index" }
when %r{^/#{component}/#{component}/#{component}$} then
- { :module => $1, :controller => $2, :action => $3 }
+ if DispatchServlet.modules(component).include?($1)
+ { :module => $1, :controller => $2, :action => $3 }
+ else
+ { :controller => $1, :action => $2, :id => $3 }
+ end
when %r{^/#{component}/#{component}/#{component}/#{id}$} then
{ :module => $1, :controller => $2, :action => $3, :id => $4 }
else
false
end
end
+
+ def self.modules(module_pattern = '[^.]+')
+ path = RAILS_ROOT + '/app/controllers'
+ Dir.entries(path).grep(/^#{module_pattern}$/).find_all {|e| File.directory?("#{path}/#{e}")}
+ end
end