Cómo asignar condicionalmente ActionController :: Base.session en los rieles 2.3.3
Tengo una aplicación de Rails que tiene el siguiente contenido en el archivo config / initializers / session_store.rb:
ActionController::Base.session = {
:key => '_app_session',
:secret => 'a really long string here',
:expire_after => 2.minutes
}
ActionController::Base.session_store = :active_record_store
Por lo tanto, durante las operaciones normales, estamos viendo objetos ActiveRecord creados en la base de datos para cada sesión. El problema es que no siempre queremos crear una sesión para las solicitudes, nos gustaría poder desactivar la creación de sesiones para las solicitudes automatizadas. Estamos viendo miles de registros de sesión en la base de datos, uno para cada solicitud automatizada. Antes de los rieles 2.3.3, era posible lo siguiente:
class ApplicationController < ActionController::Base
session :off
...
end
pero ahora en Rails 2.3.3 "session: off" ha quedado en desuso porque las sesiones ahora están cargadas de manera perezosa. Si no las usa, no se crean. El problema parece ser que el objeto de sesión siempre se asigna en el archivo sessionstore.rb y, por lo tanto, siempre se crea. Si elimino el bloque de asignación de sesión del archivo de configuración, no aparecerá ningún registro de sesión después de una solicitud automática. Mi pregunta es, ¿cómo puedo mover las asignaciones de configuración al hash de sesión fuera de session_store.rb y a la clase ApplicationController (o a otra parte) donde la sesión puede asignarse condicionalmente solo si una solicitud no es automática? Me preocupa que los datos de configuración de la sesión puedan ser necesarios antes de que se ejecute el controlador del controlador. ¿Dónde pondría la asignación de los valores clave de la sesión?
Gracias de antemano por cualquier ayuda.