我在理解如何让Sinatra缓存会话方面遇到了一些麻烦。当我启动多个应用程序实例(ala Puma或多个Thins)时,会出现此问题。
我要求Sinatra(1.4)使用这样的会话:
enable :sessions
set :session_secret, 'secret sauce'
set :protection, except: :session_hijacking
$connections = []
set connections: $connections
我已将$connections
留在那里以证明此应用正在使用服务器发送的事件,以防有任何相关性。
我是他们使用Persona(Mozilla)来支持登录/身份验证,并最终在Sinatra的会话中存储登录的电子邮件:
session[:auth_email] = data["email"]
Persona给我data
。
我无法解决的问题是我如何要求Sinatra将会话数据存储在持久存储中(理想情况下是Redis),以便可以回收应用程序而不会丢失会话状态(我已经完成了之前使用Ramaze Ramaze::Cache.options.session = Ramaze::Cache::Redis.using()
)