2012-04-03 4 views
1

Ich habe ein Problem mit Sitzungen in Schienen 3.2, wenn ich Mongoid als SessionStore verwende. Ich entschied mich dafür, Brian Hempel's Gabel von mongo_session_store gem, wie es im letzten Monat aktualisiert wurde.Mit mongo_session_store-rails3 scheint Sitzung nicht zu funktionieren

Bevor ich zu diesem Juwel wechselte, benutzte ich den standardmäßigen Cookie-basierten Sitzungsspeicher, und es funktionierte ohne Probleme. Aber jetzt, sogar flash funktioniert nicht, wenn ich auf eine andere Seite umleiten. Sitzungsdaten werden anscheinend bei jeder einzelnen Anforderung zurückgesetzt.

Und als eine Nebenfrage: jede Anfrage erstellt ein neues Sitzungsdokument in db! Ist es richtig? Ich bin verwirrt. = (

Ich habe diese Zeilen in meinem Gemfile:

gem 'mongoid', :git => 'git://github.com/mongoid/mongoid.git' 
gem 'bson_ext', "~> 1.5" 
gem 'mongo_session_store-rails3', '~> 3.0.5' 

Da ist in meinem config/initializers/session_store.rb:

SomeAppName::Application.config.session_store :mongoid_store 

sessions_controller.rb:

class SessionsController < ApplicationController 
    def new 
    ... 
    end 
    def create 
    user = User.find_by_identifier(params[:identifier]) 
    if user && user.authenticate(params[:password]) 
     session[:uid] = user._id 
     redirect_to root_url, :notice => "Logged in!" 
    else 
     flash.now.alert = "Invalid email or password" 
     render :new 
    end 
    end 
    def destroy 
    ... 
    end 
end 

Wenn jeder anderen Teil von meinem Code ist erforderlich, bitte sagen Sie mir, es zu posten im Voraus.

+0

Haben Sie Ihre Datenbank überprüfen, ob ein Sitzungsdokument sicher ist oder nicht? – shingara

+0

Ja. Wie gesagt, die "Sessions" -Sammlung ist da und für jede Anfrage wird ein neues 'Session'-Dokument erstellt. –

Antwort

4

Gem Autor hier. Version 4.0.0 wurde gerade veröffentlicht, die Mongoid 3 unterstützt.

gem 'mongo_session_store-rails3', '~> 4.0.0' 
1

Haben ähnliche und andere Probleme in meinem Projekt. Nach Änderung der Zweigstelle von cubewebsites funktioniert alles wie erwartet.

Niederlassung Beschreibung:

Diese Gabel zielt darauf ab, ein paar Probleme zu lösen ich mit dem Master-Zweig wurde:

<class:Session>': undefined method `collection_name=' for ActionDispatch::Session::MongoidStore::Session:Class (NoMethodError) 

und

<class:Session>': uninitialized constant ActionDispatch::Session::MongoidStore::Session::BSON (NameError)