문제
랙 : 세션 : 메모리 기반 세션 용 풀을 사용하고 있습니다. Rack : Session : Pool에 연락하는 풀 인스턴스 변수에 액세스하고 싶습니다. 모든 활성 세션과 포함 된 데이터를 볼 수 있습니다. Sinatra 내에서 또는 IRB 프롬프트에서 어떻게 할 수 있습니까?
나의 초기 생각은 :: sinatra : application :: rack :: session : pool이었다. 그러나 그것은 현재 인스턴스가 아닌 클래스를 제공하는 것처럼 보이므로 풀 변수에 액세스 할 수 없다.
해결책
스틱으로 코드에서 개발/디버깅/파킹을 위해이 작업을 수행하는 경우 원숭이 패치를 수행하고 풀을 글로벌 변수로 만들 수 있습니다.
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
전화를 걸면 환경을 점검하는 무언가로 monkeypatch를 감싸서 개발 중에 만 사용되도록하십시오.
제휴하지 않습니다 StackOverflow