質問

メモリベースのセッションのためプール:セッション:

私は、ラックを使用しています。をお願いします に接触させ、プールインスタンス変数にアクセスするには ラック:セッション:プールので、私はすべてのアクティブなセッションを確認し、データが含まれてすることができます。どのようにできるのか そのシナトラ内またはIRBプロンプトます。

上から

私の最初の考えは::シナトラた:アプリケーション::ラック::セッション:プールが、 それは私のクラスではなくので、現在のインスタンスを与えているようです プールの変数にアクセスできません。

役に立ちましたか?

解決

あなたは/だけの開発/デバッグのためにこれをやって棒でコードを突っついている場合は、あなたには、いくつかの猿のパッチ適用を行うと、プールにグローバル変数を作ることができます。

require 'rubygems'
require 'sinatra'
require 'yaml'

class Rack::Session::Pool
  def initialize app,options={}
    super
    $pool=@pool=Hash.new
    @mutex=Mutex.new
  end
end

use Rack::Session::Pool

get '/' do
  y $pool
  ''
end

それとも、あなたはあなたのためにそれを行うラッパーFNを書くことができます。

require 'rubygems'
require 'sinatra'
require 'yaml'

module PoolWrapper
  def self.new *args
    middleware = Rack::Session::Pool.new *args
    $pool=middleware.pool
    middleware
  end
end

use PoolWrapper
# same as above 
#...

デバッグのために、モンキーパッチは、おそらくあなたはuse呼び出しを変更する必要はありません、あなたはそれが唯一のdevel、などなどの際に使用されるように環境をチェックし、何かにモンキーパッチをラップすることができますようクリーナーです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top