如何在Rails3应用程序和Cramp之间共享会话?

时间:2012-04-23 15:26:04

标签: ruby-on-rails ruby thin rack-pow

我有一个在pow(开发中)上运行的Rails3应用程序和一个在瘦上运行的Cramp应用程序。我在Rails中使用基于cookie的会话,我希望Cramp能够访问由Rails创建的会话。

知道如何做到这一点?我是Ruby和Rails的新手。

感谢。

1 个答案:

答案 0 :(得分:0)

好吧,我想出了如何使用SSE,但我正在调试一个有趣的问题,也许你可以帮助我。

所以我创建了以下ApplicationAction

class ApplicationAction < Cramp::Action
    before_start :load_session

    def load_session
        session_id = request.cookies['_session_id']
        @session = Session.where(:session_id => session_id).first
        yield
    end
end

这使得我的所有孩子的行动都可以使用rails会话。然后我添加了一个会话模型(我使用了带有ActiveRecord的抽筋)和以下模型。

class Session < ActiveRecord::Base
    set_table_name :sessions

    # Get the data on the sessions table
    def data; Marshal.load(Base64.decode64(read_attribute(:data))); end
end

这实际上是完美的,假设所有Marshal序列化的类都可以实例化。这就是我遇到问题的地方。当通过rails将其序列化为会话数据时,这会导致ActionDispatch出现问题。

我目前正在尝试寻找更好的解决方案。