2011-08-08 7 views
4

Je travaille sur une gemme qui aura besoin de lire et écrire non seulement pour la session en cours, mais pour d'autres sessions "liées". À l'heure actuelle, je lis et j'écris en dur dans le magasin de sessions sous-jacent que nous utilisons dans nos rails et nos applications en rack chaque fois que je dois mettre à jour une session autre que la session en cours. Mais, une approche plus générique serait nécessaire pour rendre la solution portable à d'autres implémentations de session.Comment accéder à l'implémentation actuelle de Rack :: Session

Dans les applications Rails Je peux regarder Rails.application.config.session_store pour déterminer l'implémentation du stockage de session et instancier une nouvelle instance pour lire et écrire des sessions au-delà de la session en cours. Générer une autre instance du magasin de sessions semble un peu inefficace, mais cela semble fonctionner.

Cependant, je n'arrive pas à trouver un moyen d'interroger le magasin de session en cours via une application Rack. env['rack.session'] et env['rack.session.options'] ne fournissent aucun aperçu.

La meilleure solution serait d'accéder à l'application Rack :: Session Rack déjà instanciée dans la pile middleware. Je ne suis pas sûr comment interroger quel middleware est en cours d'exécution et lequel est l'implémentation de Rack :: Session en cours (juste vérifier lequel est un decendent de Rack::Session::Abstract::ID?).

Tous les conseils pour interroger le middleware ou d'autres suggestions seraient grandement appréciés.

Répondre

Questions connexes