【问题标题】:How can I share sessions between a Rails3 app and Cramp?如何在 Rails3 应用程序和 Cramp 之间共享会话?
【发布时间】:2012-04-23 15:26:03
【问题描述】:

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

知道如何做到这一点吗?我对 Ruby 和 Rails 还很陌生。

谢谢。

【问题讨论】:

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


    【解决方案1】:

    好吧,我想出了如何让这个与 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 中使用 cramp)和以下模型。

    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 序列化的类都可以实例化,这实际上工作得很好。这是我遇到的问题。这会导致 ActionDispatch 在被 rails 序列化为会话数据时出现问题。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-02
      • 2013-02-15
      • 2023-03-27
      • 1970-01-01
      • 1970-01-01
      • 2011-03-13
      • 2021-06-26
      • 2021-10-04
      相关资源
      最近更新 更多