Rails2 to rails3 routes migration problem - namespaces


I've got some problems migrating from rails2 to rails3: I have some
controllers in a subdirectory, and I want to access them in a
non-restful/resourceful way.

Previously I just created a controller in /util, prefixed the class name
with Util:: and it worked, that is /util/controller_name/action_name was
routed properly.

I was trying various approaches with :namespace, e.g.:

namespace :util do
    match ':controller(/:action(/:id(.:format)))'

but that throws an exception during boot: ":controller segment is not
allowed within a namespace block"

What is the proper way to map such controllers?

The Routing guide seems to cover this topic pretty well:


Ah, I was looking for a proper :namespace usage. This indeed helps,
though now I have:

  match ':controller(/:action(/:id))', :controller => /tabs\/[^\/]+/
  match ':controller(/:action(/:id))', :controller => /util\/[^\/]+/
  match ':controller(/:action(/:id(.:format)))'

which may not seem obvious at first. But you just need a way to tell
Rails to look beyond the first / when finding the controller name.