Daily Archives for Monday, March 2006

Ruby on Rails Ajax Scaffolding

Para los que no sepan nada de Ruby on Rails ( aka RoR) este título os sonara a chino ( podéis ver un post introductorio que hice)… La verdad es que últimamente me ha dado por RoR que es un Framework para desarrollo de aplicaciones web basado en el lenguaje de programación Ruby. El tema es que cada día quejuego con  esta framework me sorprende más su facilidad, productividad y potencia. Por eso os comento algunas cosas que voy descubriendo para que las probéis y os hagáis con vuestra propia opinión. En pocas palabras comparto experiencias.

En RoR existen unos elementos que se llaman Scaffold Generators que su misión es generar todos los elementos de una aplicación web basada en el modelo MVC ( Model view controller). Es decir que creada una tabla en la base de datos, configurada la conexión, ejecutando estos generadores con una única instrucción ya disponemos de una aplicación CRUD ( Create, Read, Update y Delete) basada en formularios webs con las operaciones básicas necesarias de registros.

Hasta aquí RoR ya trae su propio Scaffold Generator que genera un entorno  CRUD basado en web estándar. La novedad es que existe también un Scaffold Generator que te permite generar CRUD en formato Ajax. La diferencia está en que la actualización del formulario se hará sin  refrescar la página ( sin postback).

Ajax

Para crear esta aplicación que veis de la figura os muestro el procedimiento para que lo valoreis:

  1. Se supone que RubyonRails y MySql están instalados correctamente. Tan fácil como instalar InstantRails.
  2. Instalamos el AjaxScaffold generator: c\:>gem install ajax_scaffold_generator ( desde una ventana de Ruby lo descarga e  instala automáticamente)
  3. Configuramos la base de datos ( recomendado a través de la migration de RoR) y editamos el fichero config/database.yml. Se entiende que existe una tabla widgets (fijaros que el nombre de la tabla es en plural, es parte de la nomenclatura de RoR) que contiene dos campos Name y Version. ( Además deberá de existir un campo id que será el índice como en todas la tablas RoR)
  4. Creamos aplicación c:>rails aplicacion ( desde el comando de RoR)
  5. c:>Ruby script/generate Ajax_scaffold widget widget
  6. Arrancamos WEBrick  ( servidor web de RoR para desarrollo): c:\aplicacion\>ruby script/server ( desde el subdirectorio de la aplicación)
  7. Abrimos un navegador y vamos a la dirección http://127.0.0.1:3000/widget
  8. En este caso veremos una aplicación parecida a la de la imagen de arriba. Podéis probar una demo. Os recomiendo que lo probéis ya que  el resultado es el mismo.
  9. Si queréis profundizar en validación y otros elementos podéis consultar en el blog del autor.

Como podéis ver la aplicación básica y en formato Ajax la hemos montado en menos de 5 minutos. Ahora tan sólo hemos de seguir pensando en la aplicación, añadiendole la lógica que queramos y modificando las CSS para darle el diseño que nos guste. Esta claro que tenemos tiempo para concentrarnos en la aplicación y las tareas básicas de programación la base está ya automatizada. No se que otras experiencias tendrán otros programadores, pero mi experiencia en Asp. Net para desarrollar algo parecido y aprovechando código puedo estar un par de horas.

Desde la última versión de este generador soporta que cuando llegue un usuario que no tenga Javascript automáticamente lo direccione a la aplicación sin Javascript ( Javascript degredation). Esta características es necesaria para el 0,37% de los usuarios que nos visiten y no tengan javascript ( según el autor).

Otro tema interesante es que RoR es muy vivo y van saliendo actualizaciones frecuentemente. Con un sólo comando de gem ( c:> gem update) actualizamos RoR y todos los componentes automáticamente. Hace que sea fácilmente mantenible.

A ver si os animais y en el peor de los casos os sorprenderá la simplicidad del entorno…

[RubyonRails]
[entendiendo Generadores]
[Wikipedia Ruby on Rails]
[Blog de Richard White creador de este generador]
RubyonRails