質問
メモリベースのセッションのためプール:セッション:
私は、ラックを使用しています。をお願いします に接触させ、プールインスタンス変数にアクセスするには ラック:セッション:プールので、私はすべてのアクティブなセッションを確認し、データが含まれてすることができます。どのようにできるのか そのシナトラ内または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、などなどの際に使用されるように環境をチェックし、何かにモンキーパッチをラップすることができますようクリーナーです。
所属していません StackOverflow