Rails 2.3:服务器重启后第一次请求的会话不可用

时间:2012-04-18 18:18:05

标签: ruby-on-rails session

我目前正在将rails应用程序从2.1.0升级到2.3.14。 现在大多数事情都运行良好,但用户会话存在一个奇怪的问题:

当用户登录后,会将其保存在会话中,即使在浏览器重新启动后也可以使用它。

但是:当我重新启动本地服务器并加载需要身份验证的页面时,会发生以下情况:

  1. Rails在数据库中创建一个与以前完全相同的session_id的新会话行。
  2. 在应用程序内部,“旧”会话不可用,旧会话数据不可用。
  3. 如果我之后只是重新加载页面(F5),则包含旧数据的正确会话将被正确加载。
  4. 应用程序使用ActionController::Base.session_store = :active_record_store和多个数据库(每个子域一个,不是我的决定)。选择正确的数据库为before_filter,rails将会话保存在这些数据库中。

    我的猜测是,在服务器重启后,某些内容尚未正确设置,并且会在错误的数据库中搜索会话并保留第一个请求(但是在通过ActiveRecord::Base.establish_connection设置后,它会保存在正确的数据库中)。

    如果我的猜测是正确的,在建立连接后加载正确的会话应该解决这个问题。 有没有办法从数据库中完全重新加载会话或告诉Rails为所有会话使用自定义数据库?

    提前致谢!

0 个答案:

没有答案