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