【问题标题】:Using Rack::Session::Pool with Sinatra在 Sinatra 中使用 Rack::Session::Pool
【发布时间】:2010-10-31 21:37:05
【问题描述】:
我正在探索 Sinatra,我想使用会话,但我不想将它们存储在 Cookie 中,我发现 Rack::Session::Pool 效果很好。
现在我希望会话在一段时间后过期,但我不明白如何实例化 Rack::Session::Pool 并且他们在 Sinatra 中使用它。
有什么线索吗?
【问题讨论】:
标签:
ruby-on-rails
ruby
sinatra
【解决方案1】:
Sinatra 非常强大,来自 The Wicked Flea 的技巧没有奏效,但它确实奏效了:
use Rack::Session::Pool, :domain => 'example.com', :expire_after => 60 * 60 * 24 * 365
谢谢!
【解决方案2】:
在您的机架文件中:
%w(rubygems rack sinatra).each { |dependency| require dependency }
disable :run
require 'myapp'
sessioned = Rack::Session::Pool.new(
Sinatra::Application,
:domain => 'example.com',
:expire_after => 60 * 60 * 24 * 365 # expire after 1 year
)
run sessioned
要启动运行rackup app.ru,或使用Passenger等。这应该将您的应用程序包装在会话池中并启用其功能。我不完全知道为什么它不需要像大多数其他中间件一样使用。
了解我根本没有测试过这个,我还没有需要会话池的东西。我是从documentation 为 Rack::Session::Pool 写的,页面顶部有一个示例。所以,我也不能确切地告诉你如何使用它。