我正在将 Rails 应用程序从 Rails 2 直接升级到 Rails 4。我正在使用/config/initializers/session_store.rb
带有 CookieStore 的新文件,但由于某种原因我的会话没有保存。
当尝试按照以下方式做某事时,
render :text => "#{request.session_options[:id]}"
我每次刷新都会获得一个新的会话 ID。
我在不同的浏览器上试过,都应该接受 cookie。
我不知道是怎么回事。为什么这些会话不会持续存在?!
编辑:谢谢大家的建议。这里有更多信息,以及我注意到的一些事情:
- 首先,关于我的设置——我在我的 Windows 7 机器上的 Ubuntu VM 上通过 RVM 运行带有 Rails 4/Ruby 2 的服务器。
- 虽然我是从 Rails 2 升级的,但这仅适用于模型/控制器/视图/等——我为所有支持基础设施生成了一个新的 Rails 4 应用程序。
- 我在同一个虚拟机上创建了另一个应用程序,它只是设置一个会话然后显示,并且工作正常。
- 会话存储的内容根据用户的操作而略有不同,但通常它只包含一个用户 ID(只是一个整数),偶尔还会包含更多——(我在尝试传递 OAuth 令牌时首先注意到这一点来自 OAuth 宝石。)
- 我注意到,如果 VM 的系统时钟落后于 Windows 7 主机时钟,则用户 ID 会话保持不变。这会导致其他问题,尤其是 OAuth,但似乎只是某个地方存在时间问题。我尝试过从环境/development.rb 中删除时区等操作,但这并没有帮助。