В проекте, над которым я работаю, Apache настроен на пересылку только тех запросов, которые входят как / prefix / *, на mongrel. Как я могу сказать Ruby on Rails, чтобы он сгенерировал все URL-адреса с этим префиксом?
Я настроил маршруты для перехода к правильному действию контроллера, выполнив следующие действия:
map.connect 'sfc/:controller/:action'
но это, похоже, не влияет на способ, которым писатель URL генерирует URL.
Есть идеи?





Переменная окружения RAILS_RELATIVE_URL_ROOT должна помочь, хотя я сам не пробовал.
Как насчет использования опции: path_prefix:
map.connect ':controller/:action', :path_prefix => 'sfc'
У вас, вероятно, есть другой маршрут (возможно, один из маршрутов по умолчанию в конце routes.rb), который генерация URL использует вместо совпадения с префиксом sfc. Например, если у вас есть
map.connect "sfc/:controller/:action"
map.connect ":controller/:action/:id"
тогда url_for(:controller => 'x', :action => 'y', :id => 3) вернет "/x/y/3". Если вы измените его на
map.connect "sfc/:controller/:action"
map.connect "sfc/:controller/:action/:id"
у вас должен получиться "/sfc/x/y/3".
Mongrel принимает параметр --prefix, который затем будет добавлен ко всем сгенерированным URL-адресам. Это единственный известный мне способ запустить несколько экземпляров одного и того же приложения на одном сервере.
Изменения в Rails 2.3+ сломали параметр --prefix в mongrel, и он не обновлялся. Вам придется самостоятельно пропатчить код, чтобы он заработал должным образом.