【发布时间】:2011-09-09 09:12:54
【问题描述】:
我想使用会话 cookie 存储在 Rails 2.3.14 应用和 Rails 3.0.10 应用之间共享会话。
我找到了一篇很棒的博文,它解释了如何设置它: http://blog.kabisa.nl/2010/10/27/share-sessions-between-rails-2-and-rails-3-applications/
在出现问题之前一切正常,Rails2 将会话键存储为符号,Rails3 存储为字符串。还提供了一个补丁来解决这个问题:
# lib/patches/cgi/session.rb
require 'cgi/session'
class CGI #:nodoc:
class Session #:nodoc:
def [](key)
@data ||= @dbman.restore
@data[key.to_s]
end
def []=(key, val)
@write_lock ||= true
@data ||= @dbman.restore
@data[key.to_s] = val
end
end
end
该博客是 2010 年的,看起来这个补丁对 Rails2.3.14 应用程序的工作时间更长。我还读到 CGI 真的被弃用了,所以我想知道这个补丁是否仍然是解决问题的正确方法。
有什么建议可以确保 Rails2 和 Rails3 对会话密钥使用相同的数据类型?
【问题讨论】:
-
使用 Rails 2 或 Rails 3 应该没有区别,因为 cookie 在浏览器中存储为字符串(文本文件)。使用符号或字符串来获取/设置值都没有关系。序列化可能已从 2 更改为 3。您不能尽可能使用原始方法吗?
标签: ruby-on-rails-3 ruby-on-rails-2