Comment puis-je set/get session de vars dans un Rack application?
use Rack::Session::Pool
...
session[:msg]="Hello Rack"
EDIT: Le mot de la session ne semble pas résoudre. J'ai inclus la Séance piscine middleware dans mon config.ru et essayer de mettre une variable dans un fichier ERB (je suis en utilisant Ruby Servir) et il se plaint de "undefined variable locale ou de la méthode `session'"
Merci!
ce qui ne fonctionne pas exactement? est l'assistant session ne fonctionne pas du tout, ou bien est-ce que la session[:msg] n'est pas défini? ce n'session.inspecter vous donner?
OriginalL'auteur rebnoob | 2012-05-04
Vous devez vous connecter pour publier un commentaire.
session
est une méthode qui fait partie de certains frameworks web, par exemple Sinatra et Rails les deux ontsession
méthodes. Plainerack
applications n'est pas unsession
méthode, sauf si vous ajoutez-en un vous-même.La session de hachage est stocké dans le rack env de hachage sous la clé
rack.session
, donc vous pouvez y accéder comme ça (en supposant que vous avez nommé le rack de l'environnement de votre applicationenv
):Sinon, vous pouvez utiliser Rack intégré dans
demande
de l'objet, comme ceci:Mais alors pourquoi, vous pouvez également le faire:
request.env['rack.session'][:msg]="Hello Rack"
? Si je comprends bien,Rack::Request
est un wrapper autour deenv
mais si oui, alors comment nerequest.env[...
sens? Je ne peux pas obtenir ma tête autour d'elle :\est un wrapper autour de la
env
de hachage qui permet de faire plusieurs choses en commun facilement, et il donne également accès à laenv
de hachage n cas où vous avez besoin de l'utiliser directement pour quelque chose quiRack::Request
ne fournit pas.Merci de confirmer et d'expliquer... cependant, n'est pas le fait que
#env
est disponible surRack::Request
un peu confus?Rack::Request
encapsuleenv
, mais en même temps#env
est disponible àRack::Request
de fournirenv
dans sa forme brute.. pourquoi donc, lorsque l'originalenv
est encore disponible partout, déjà? Peut-être à partir d'un concepteur de classes de point de vue est juste pour faireRack::Request
plus complet sur son propre? Juste essayer de comprendre le raisonnement derrière cela... Merci!Oui, vous pouvez simplement utiliser
env
directement et de ne pas s'embêter avecRack::Response
, mais la classe fournit des méthodes commescheme
ethost
où vous auriez besoin de chercher les différents en-têtes et comment ils sont utilisés afin de répliquer, ainsi que l'accès facile aux paramètres de la requête (y compris l'analyse des chaînes de requête), il est donc plus pratique à utiliser.OriginalL'auteur matt
Vous devez charger
rack::session
module suivant probablement cookie comme icihttp://rack.rubyforge.org/doc/classes/Rack/Session/Cookie.html
Comme l'explique avec un exemple.
OriginalL'auteur Jakub Oboza