Jujuy Al Día actualizado a Ruby on Rails

Finalmente hoy primero de Marzo se puso en línea la nueva versión Jujuy Al Día, mi primer desarrollo Ruby on Rails de envergadura importante hasta la fecha. Jujuy Al Día es el diario online más popular de la provincia de Jujuy, Argentina, superando en visitas a la versión para Internet del diario impreso de mayor circulación local y siendo una referencia obligada para otros medios de comunicación regionales y nacionales.

La tarea desarrollada consistió en reemplazar el antigüo sistema de administración de contenidos basado en PHP (una aplicación comercial desarrollada en Rusia llamada "NewsPHP") por otro más moderno que permitiera fexibilidad a la hora de optar por un diseño totalmente original y actualizara las características de administración para hacerlas más acordes a los nuevos requerimientos de los medios de noticias actuales.

Después de relevar las necesidades del cliente se hizo evidente que las mismas podían ser resueltas en su totalidad con Ruby on Rails, con todas las ventajas que eso suponía sobre un desarrollo tradicional en PHP.

Las únicas cuestiones por solucionar eran el deployment y la escalabilidad de la aplicación hasta por lo menos la performance de su antigüa aplicación PHP4. Afortunadamente, la excelente predisposición en ese asunto de SitiosHispanos, el proveedor de hosting para el sitio, excedió mis expectativas y resultó una experiencia mutuamente enriquecedora.

Migración

Con un archivo de 6 años y más de 30.000 noticias publicadas, la migración de los contenidos a la nueva aplicación tampoco era una tarea menor que dejar para último momento. Pero, afortunadamente, las migraciones introducidas en Rails 1.1 probaron ser una herramienta imprescindible e invaluable para ese trabajo. Se descartaron todas las tablas MySQL del viejo sistema (NewsPHP) excepto la que albergaba las noticias propiamente dichas y se migraron progresivamente las nuevas.

Los números

Los números de las estadísticas producidas por rake stats muestran la cantidad de líneas de código involucradas en las partes más fundamentales del proyecto:

  • Helpers: 99
  • Controllers: 578
  • Models: 129

Plugins

Una buena parte de la funcionalidad del nuevo sitio fué cortesía de unos cuantos plugins que demostaron su valía una y otra vez desde el inicio del proyecto. Para JujuyAlDía resultaron imprescindibles:

  • FileColumn
  • Session Timeout
  • Simple Access Control

De acuerdo al consenso autorizado actual no opté por el uso ningún engine, incluso donde podría haber sido una opción, como en el caso de la autentificación de usuarios.

Deployment

La instalación de la aplicación Rails de Jujuy Al Día fué realizada en un servidor Apache 1.3 con una cantidad de procesos FastCGI asignados; una configuración a la vieja usanza que no aprovecha la experiencia de los más recientes grandes deployments Rails del último año, pero la única opción disponible en la cuenta de hosting compartido del cliente.

Al respecto, el trabajo necesario para configurar correctamente los parámetros del servidor compartido para el nuevo Jujuy Al Día probó ser una experiencia meticulosa pero invaluable tanto para mí como para los administradores a cargo.

Por estas particularidades y otras más fué imposible usar Capistrano de primera mano, una falta que se hizo sentir cuando el sitio ya en línea precisó actualizaciones y correcciones frecuentes de último momento. Esta ausencia sin embargo fué suplida de alguna manera por el uso de Subversion para administración del código producido.

TO-DO

Deudas pendientes para la próxima versión de Jujuy Al Día, sin ningún orden en particular:

  • Más caching.
  • Más routing para atrapar y redirigir más URLs obsoletas.
  • Portar el viejo sistema de avisos clasificados basado en PHP a Rails.
  • "Refactorear" el código para una inevitable actualización a Rails 1.2.
  • Probar una configuración basada en Apache2, mod_proxy y Mongrel preparando un potencial cambio de server.
  • Usar Capistrano incluso si el sitio sigue estando en un servidor compartido.
  • Comenzar a usar Unit Tests y Functional Tests de una vez y explorar el desarrollo basado en Tests (Test-Driven Development).

 

RSS Blog