Routing Problem


#1

Hi, I have the following route setup


map.auth ‘users/auth/:action/:id’,
:controller => ‘users/auth’, :action => nil, :id => nil

map.authadmin ‘users/authadmin/:action/:id’,
:controller => ‘users/authadmin’, :action => nil, :id => nil

Allow downloading Web Service WSDL as a file with an extension

instead of a file named ‘wsdl’

map.connect ‘:controller/service.wsdl’, :action => ‘wsdl’
map.admin ‘admin/:controller/:action/:id’, :module => ‘admin’
map.file_upload ‘file_uploader/:controller/:action/:id’, :module =>
‘file_uploader’

map.connect ‘:lang/:controller/:action/:id’

Install the default route as the lowest priority.

map.connect ‘:controller/:action/:id’, :lang => ‘de’

map.index ‘’, :lang => ‘de’, :controller => ‘employees’

and the following problem:

This works like a charm on my development system, but has an error on my
production system (textdrive). It should recognize
‘my_host/admin/employees’ as a route to Admin::EmployeesController and
‘my_host/employees’ as one to EmployeesController. The above code
usually works.

On Textdrive, this first route gets recognized as a route to
EmployeesController with params {:lang => ‘admin’, :controller =>
‘employees’}, although map.admin is defined first. map.auth an
map.file_upload both work fine. Rails is found in vendor and is thus the
same version on both systems. Does anyone have an idea what could cause
this behaviour?

P.S.: If you wonder about :module, this is a small hack to make it
possible to force a module:

module ActionController
module Routing
class RouteSet
def recognize(request)
params = recognize_path(request.path,
extract_request_environment(request))
request.path_parameters = params.with_indifferent_access

    controller = [params[:module],

params[:controller]].compact.join(’/’)

    "#{controller.camelize}Controller".constantize
  end
end

end
end

P.P.S.: Please, I don’t want to discuss whether or not to use
controllers in modules.