Я запускаю приложение rails 3 на корневом уровне в среде пассажира phusion (CentOS, apache), и мне трудно заставить пассажира найти некоторые маршруты, хотя rake routes правильно показывает маршруты. В разработке все работает нормально (т.е. с использованием rails server вместо phusion пассажира в apache).
У меня есть раздел администратора для моего приложения со страницей входа. Основная часть приложения работает, но все в разделе администратора недоступно, потому что я получаю 404 вместо страницы входа (когда я отключаю вход, я могу получить доступ к страницам администратора). Моя конфигурация апача
<VirtualHost *:80>
ServerName foo.bar.com
DocumentRoot /var/www/apps/myapp/current/public
<Directory /var/www/apps/myapp/current/public>
Allow from all
Options -MultiViews
</Directory>
</VirtualHost>
Мой процесс входа в систему реализован как before_filter в контроллере администратора:
class Admin::AdminController < ApplicationController
# login disabled for testing
before_filter :require_login
def require_login
@current_user ||= User.find_by_id(session[:user_id])
redirect_to admin_login_path unless @current_user
end
end
Мой файл маршрутов имеет
Mpf::Application.routes.draw do
secure_protocol = "https://"
...
namespace "admin" do
...
match "login" => "user_sessions#new", :as => :login, :constraints => { :protocol => secure_protocol }
...
end
...
end
и когда я запускаю рейк-маршруты, я получаю
admin_login /admin/login(.:format) {:protocol=>"http://", :action=>"new", :controller=>"admin/user_sessions"}
НО когда я пытаюсь получить доступ к http://foo.bar.com/admin, я получаю 404 и журнал показывает
Started GET "/admin/login" for iii.iii.iii.iii at 2011-07-13 07:20:41 -0400
ActionController::RoutingError (No route matches "/admin/login"):
Насколько я могу судить, он должен работать... за исключением того факта, что это не так. Любая помощь будет принята с благодарностью!