Si quieres suscribirte al feed RSS del blog, este es el canal por defecto: http://www.sirius06.es/feed/
HOYGAN HAMIJOS!!!

Publicado en Mayo de 2009:

El Mostro de las cookiesSi a pesar de trabajar con un framework como RoR te empeñas en salirte de las convenciones prefijadas, ya sea por gusto, desconocimiento o circunstancias del proyecto, eres de los míos. Mi caso se acerca más al último punto (con un pequeño toque del segundo :P ), por lo que he tenido algunos problemas derivados de esta situación.

Llegó un punto en el que tuve que almacenar una gran cantidad de texto en “flash“. Todos éramos felices, el Sol salía cada mañana y los pajarillos canturreaban… hasta que dicha información superó los 4 Kb ≈bad≈ . No había caído en que se estaba haciendo uso de las cookies para almacenar el ID de sesión, por lo que a veces aparecía una bonita excepción con el nombre que titula este post.

Pero Rails siempre tiene una alternativa, y esta vez consistía en guardarlo todo directamente en la BBDD, mejorando de rebote la seguridad del sistema (no así su rendimiento, aunque la diferencia es mínima). Para ello, sólo tenemos que seguir los siguientes pasos:

  • Descomentar el “protect_from_forgery :secret” en el archivo “controllers/application.rb“.
  • Descomentar también la línea que tiene lo siguiente en el “environment“: “config.action_controller.session_store = :active_record_store“.
  • Ejecutar estas dos tareas “rake”: “db:sessions:create” (que nos creará el archivo con la estructura de la tabla) y “rake db:migrate” (que ejecutará la migración de acuerdo al paso anterior).

Si todo ha ido bien, en el próximo reinicio del servidor deberíamos ver el tinglado este funcionando. :)

ActualizarCada vez que hago o modifico una web intento que sea navegable aún teniendo JS desactivado. Esto, que es tan obvio y que debería formar parte del libro de cabecera de cualquier desarrollador, a veces no llega a todos los rincones de la aplicación, cuando debería ser así.
Uno de los resquicios olvidados en esos casos es el típico botón de “actualizar”, que normalmente hacemos mediante un “javascript:document.location.reload();” en el href, el cual estaría mucho mejor si se tratase de un simple link a la página actual.

En RoR por ejemplo, bastaría con invocar al “request.request_url“. Pero claro, esto también tiene un pero: sólo lo podemos hacer si trabajamos con un lenguaje de servidor.