2010-09-15 16 views
3

J'émigre une application existante de Rails 2 à Rails 3. Dans l'ancien fichier de l'environnement, SqlSessionStore a été mis en place avec:SqlSessionStore dans Rails 3

ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.update(:database_manager => SqlSessionStore) 
SqlSessionStore.session_class = MysqlSession 

Lorsque vous essayez de démarrer mon application dans Rails 3, I « m dit:

DEPRECATION WARNING: config.action_controller.session= has been deprecated. Please use config.session_store(name, options) instead. (called from config/application.rb:35) 
/opt/ruby-enterprise-1.8.7-2010.02/lib/ruby/gems/1.8/gems/rake-0.8.7/lib/rake.rb:2503:in `const_missing': uninitialized constant ActionController::CgiRequest (NameError) 

est-il un moyen facile de traduire ce concept dans Rails 3, ou dois-je revoir la façon dont les sessions sont traitées?

Répondre

3

Vous voulez quelque chose comme ça dans application.rb

module MyApp 
    class Application < Rails::Application 
    config.session_store :active_record_store 

Voir les documents et les questions ici: http://apidock.com/rails/ActiveRecord/SessionStore

+0

J'ai pris un coup d'œil à ActiveRecordStore, mais je l'ai lu qu'il a des performances problèmes, et c'est pourquoi cette application utilisait [SqlSessionStore] (http://railsexpress.de/blog/articles/2005/12/19/roll-your-own-sql-session-store/). Ces problèmes de performances ont-ils été améliorés dans Rails 3 ou existe-t-il un moyen d'utiliser SqlSessionStore avec les nouveaux Rails? – jrdioko

+2

ActiveRecordStore devrait fonctionner sur tous les sites, sauf les plus grands. Si vous rencontrez des problèmes de performances, vous devez utiliser memcached pour vos sessions. Ne pas optimiser tôt, les sessions sont très probablement une partie négligeable de votre vitesse de requête. Cela dit - non, je ne trouve aucune mention de sqlsessionstore pour rails3. Peut-être qu'ils l'ont fait, mais je n'en ai aucune idée. – Kevin