我正在尝试将Rails应用程序从一台服务器迁移到另一台服务器。应用程序在当前服务器上运行正常。我设置了目标服务器,安装了ruby,rails和postgres。然后我从源服务器上抄掉代码并在目标服务器上解压缩它。我运行了bundle install和rake db:setup。
我可以运行rails console并查看种子文件中的对象并与它们进行交互。我可以运行rails服务器并连接到应用程序。但是当我对应用程序进行身份验证时,我会被重定向到一个页面,要求我再次进行身份验证。
我确定我输入了正确的密码。如果我故意输入错误的密码,我会被带回到我所在的同一个登录页面。如果我使用正确的凭据登录,我会被重定向到另一个页面,告诉我需要进行身份验证。在解决问题时,我在生产环境中启用了日志记录级别。当我使用正确的凭据登录时,我可以看到数据库查询,它会更新User对象以反映另一个成功登录,并将上次成功登录日期作为当前时间。
AREL (0.3ms) UPDATE "users" SET "sign_in_count" = 3, "updated_at" = '2013-01-03
00:45:19.787483', "current_sign_in_at" = '2013-01-03 00:45:19.786763', "last_sign_in_at"
= '2013-01-02 22:56:39.395815' WHERE "users"."id" = 1
SQL (0.4ms) COMMIT
我还修改了我被重定向到的页面上的代码,这样如果user_signed_in会显示“没有用户登录”的字样?返回false。我每次都看到。这意味着输入了正确的用户名和密码但由于某种原因未创建会话。
但就像我说的,这段代码在其他服务器上工作正常。是否有一些我可能忽略的设置步骤?
进一步调查显示,这个问题似乎只在生产模式中体现出来。在开发中运行应用程序按预期工作。