2009-06-06 12 views
5

私はSinatraを探索していますが、セッションを使用したいのですが、Cookieに格納したくないのです。よくSinatraでRack :: Session :: Poolを使用する

私は一定の時間が経過してセッションが終了するようにしたいが、Rack :: Session :: Poolをインスタンス化する方法は理解できず、Sinatraで使用している。

ヒント?あなたのrackupファイルで

+1

しかし、['Rack :: Session :: Pool'](http://rack.rubyforge.org/doc/classes/Rack/Session/Pool.html)はクッキーを使用していませんか? – ma11hew28

答えて

4

%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を起動、または乗客を使用するには、などこれは、セッション・プールでアプリケーションをラップし、その機能を有効にするべきです。私はそれが必要でない理由を完全にはわかりません他のミドルウェアのように使用してください。

私はこれを全くテストしていないことを理解しています。まだセッションプールが必要なものはありませんでした。私はdocumentationからRack :: Session :: Poolのためにこれを書いていますが、これはページ上部に例があります。だから、それを使う方法を正確に伝えることはできません。

9

シナトラは非常に強力で、邪悪なノミからのトリックは動作しませんでしたが、これはやった:

use Rack::Session::Pool, :domain => 'example.com', :expire_after => 60 * 60 * 24 * 365 

ありがとう!