Configurando el SQLSessionStore en Rails
Publicado por Edgar González 14 Junio 2006 en Rails, Ruby.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
libde 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_idporsessidy agregando la columnacreated_at. El archivo en cuestión quedó de esta forma:
RUBY:
-
class AddSessions <ActiveRecord::Migration
-
def self.up
-
create_table :sessions do |t|
-
t.column :sessid, :string
-
t.column :data, :text
-
t.column :created_at, :datetime
-
t.column :updated_at, :datetime
-
end
-
-
add_index :sessions, :sessid
-
end
-
-
def self.down
-
drop_table :sessions
-
end
-
end
- Y por último modifique el
config/environment.rbagregándole al final del archivo las siguientes líneas:
RUBY:
-
require 'sql_session_store'
-
require 'mysql_session'
-
ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS.update(:database_manager => SQLSessionStore)
-
SQLSessionStore.session_class = MysqlSession