2011-08-08 22 views
4

我正在研究一個gem,它不僅需要讀寫當前會話,還需要讀寫其他「鏈接」會話。現在,當我需要更新除當前會話之外的會話時,我正在對我們在rails和rack應用程序中使用的底層會話存儲進行硬編碼讀寫操作。但是,需要更通用的方法來將解決方案移植到其他會話實現中。如何訪問當前的Rack :: Session實現

在Rails應用程序中,我可以看Rails.application.config.session_store來確定會話存儲實現,並實例化一個新實例來讀寫當前會話之外的會話。生成會話存儲的另一個實例似乎有點低效,但它似乎工作。

但是,我找不出任何方式通過Rack應用程序查詢當前會話存儲。 env['rack.session']env['rack.session.options']不提供任何見解。

最好的解決方案是訪問中間件堆棧中已經實例化的Rack :: Session Rack應用程序。我不知道如何查詢什麼中間件正在運行,哪一個是當前的Rack :: Session實現(請檢查哪一個是Rack::Session::Abstract::ID的派生?)。

查詢中間件或替代建議的任何提示將不勝感激。

回答