Frage

Ich bin mit Rack: Session: Pool für Speicher basierte Sessions. Ich würde gern die Pool-Instanz-Variablen zuzugreifen, die in Kontakt gebracht wird in Rack: Session: Pool, damit ich alles aktive Sitzung und enthaltenen Daten sehen kann. Wie kann ich dass aus Sinatra oder auf der irb prompt.

mein erster Gedanke war, :: Sinatra: Bewerbung :: Rack-:: Session: Pool, aber Das scheint mir die Klasse zu geben und nicht die aktuelle Instanz, so dass die Pool Variable ist nicht zugänglich.

War es hilfreich?

Lösung

Wenn Sie dies nur für die Entwicklung tun werden / Debugging / Stossen bei Code mit einem Stock, Sie könnten etwas Affen Patchen tun und den Pool eine globale Variable machen.

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

Oder Sie können einen Wrapper fn schreiben, die für Sie tut das.

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 
#...

Für das Debuggen, ist der Affe Patch wahrscheinlich sauberer als Sie müssen nicht den use Anruf ändern und Sie können die monkeypatch mit etwas wickeln, dass die Kontrollen der Umgebung, so dass es nur während der Entwick verwendet wird, etc, etc.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top