题
我使用的机架:会话:池基于内存的会话。我想要 访问在接触池中的实例变量 机架:会话:水池,所以我可以看到所有的活动会话和包含的数据。我能怎么做 从内西纳特拉或在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