Rails 3子域

问题描述:

我想将我的应用程序发布到一组选定的个人以进行私人测试。我为此任务创建了一个子域:beta.company.com。Rails 3子域

应用程序按预期在我的工作站上运行,但是当我将它推送到服务器时,应用程序会不断地路由回到验证页面。仅供参考,我使用的是声明式授权,authlogic和Passenger。

的routes.rb:

#Application controller 
    match "/not_authorized", :to => "application#not_authorized", :as => :not_authorized 

    #UserSessions controller 
    match "/quit", :to => "user_sessions#destroy", :as => :quit 
    match "/authenticate", :to => "user_sessions#new", :as => :authenticate 
    resources :user_sessions, :only => :create 

    #Users controller 
    match "/enroll", :to => "users#new", :as => :enroll 

    # root url 
    root :to => "users#index" 

症状:

  • 匿名途径(例如user_sessions#创建,NOT_AUTHORIZED)如预期的匿名工作。用户
  • 的应用程序运行如预期我的工作站

。当我看着production.log,我看到这样一个条目:通过UsersController#指数HTML 权限

加工否认: #@role_symbols = [:guest]>(roles [:guest],privileges [:index,:read,:manage],context:users)的索引找不到匹配的规则。 重定向到http://beta.company.com/authenticate

**编辑**

其一,没有一个UsersController#index动作,如果有,匿名用户将无法访问它。我很困惑它为什么试图路由那里(而不是根url,这是成功的身份验证后应该去的地方)。

这看起来像是一个子域特定的路由问题,但我无法确定。

更仔细地重读这个'错误'。有一个UserController#索引操作,匿名用户不应该有权访问它。乍一看,我认为它读取UserSessionController#index,这是不存在的操作。

现在,似乎认证的用户没有被创建或保存,因此正被重新路由回UserSession#new action(AKA认证路径)。

**/**编辑

**编辑** II

我从cookie_store改为active_record_store:

# cookie store 
# MyApp::Application.config.session_store :cookie_store, :key => '_myApp_session' 
# active-record store 
MyApp::Application.config.session_store :active_record_store 

新增的表($耙分贝:会话:创建) ,迁移($ rake db:migrate),重新启动Apache($ touch tmp/restart.txt),清除浏览器的缓存,然后重新启动浏览器。

会话已成功添加到会话表中,但我仍然遇到问题。

** /编辑II **

想法是非常感激。

该问题与控制器中的SELECT语句有关。 SELECT语句中的表名称区分大小写,“SELECT Users。*”导致错误。出于某种原因,这个错误没有被包含在production.log文件中。随后的部署(不使用Capistrano)做了一些事情(我仍然不知道如何),以便将此错误包含在production.log文件中。

现在,如果我可以确定那是什么东西...

对于初学者...

其一,没有一个UsersController#index动作,如果有,匿名用户将无法访问它。我很困惑它为什么试图路由那里(而不是根url,这是成功的身份验证后应该去的地方)。

您的根网址是UsersController#指数:

# root url 
root :to => "users#index" 

检查以确保您设置的测试域的cookie。您可能正在重定向或设置使用完整网址的链接(而不仅仅是路径,因此user_url(@user) vs user_path(@user)),这会导致您直接进入根域。

+0

我想我没有仔细阅读日志 - 编辑帖子。如何在Beta版域上设置Cookie(必须与我现在所做的不同)?成功的身份验证会路由到“root_url”。您建议改为路由到users_path,对吗? – craig 2011-02-09 14:54:21