J'utilise la session Rails pour stocker un cookie_jar que je reçois de Mechanize. Cela me permet d'appeler un webservice et de maintenir les cookies qu'il renvoie.La session Rails a besoin de "inspect" pour être appelée
La classe prend une session dans son constructeur, donc je passe dans la session Rails. Puis, quand je l'appelle le service, je charge le cookie_jar (si j'ai une) comme:
agent = WWW::Mechanize.new
agent.cookie_jar = YAML.load(@session[COOKIE_JAR]) if @session.has_key? COOKIE_JAR
Une fois que je suis fait faire l'appel, je stocke le nouveau cookie_jar comme:
@session[COOKIE_JAR] = agent.cookie_jar.to_yaml
Bien que j'adorerais juste stocker le "agent", il ne peut pas être sérialisé (et ne peut donc pas aller dans la session). Voici la partie funky: si j'appelle "session.inspect" dans mon constructeur de classes (ou à tout moment avant de vérifier si la session a la clé que je cherche), tout fonctionne bien. Supprimez l'appel à "session.inspect" et cela ne fonctionne plus.
Quelqu'un sait-il pourquoi la session Rails se comporte de cette façon?