Despues de haber leido el post "A Look at Common Performance Problems in Rails" de Stefan Kaes en InfoQ decidí probar el SQLSessionStore para el manejo del almacenamiento de las sesiones de aplicaciones rails que desarrolló el mismo Stefan Kaes, el cual tiene mejor rendimiento que las alternativas por defecto que trae rails: el PStore o el ActiveRecordStore.

Los pasos que seguí para configurar el SQLSessionStore para rails 1.1.2, fueron estos:

  • Descargar los archivos del SQLSessionStore (la versión más reciente es la 0.2 que incluye soporte para MySQL y PostgreSQL) e instalarlos en el directorio lib de mi aplicación rails.
  • Ejecutar rake create_sessions_table, lo cual crea un nuevo migration (db/migrate/xxx_add_sessions.rb) para la creación de la tabla "estándar" de sesiones de rails.
  • Como la tabla "estándar" de sesiones de rails no coincide directamente con el esquema utilizado por el SQLSessionStore, ajuste el migration creado, renombrando la columna session_id por sessid y agregando la columna created_at. El archivo en cuestión quedó de esta forma:
RUBY:
  1. class AddSessions <ActiveRecord::Migration
  2.   def self.up
  3.     create_table :sessions do |t|
  4.       t.column :sessid, :string
  5.       t.column :data, :text
  6.       t.column :created_at, :datetime     
  7.       t.column :updated_at, :datetime
  8.     end
  9.    
  10.     add_index :sessions, :sessid
  11.   end
  12.  
  13.   def self.down
  14.     drop_table :sessions
  15.   end
  16. end

  • Y por último modifique el config/environment.rb agregándole al final del archivo las siguientes líneas:
RUBY:
  1. require 'sql_session_store'
  2. require 'mysql_session'
  3. ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.update(:database_manager => SQLSessionStore)
  4. SQLSessionStore.session_class = MysqlSession


RSS feeds

Suscríbete a nuestros RSS Feeds