miércoles, 20 de agosto de 2008

Primera aplicación en Rails

El objetivo de este artículo es crear una aplicación sencilla en Rails que nos permita efectuar altas bajas y modificaciones de una tabla en una base de datos. Crearemos la tabla y utilizando los scripts que generan componentes del MVC de Rails generaremos la aplicación web.

Tema de la aplicación

Trabajaremos sobre una aplicación para una casa de alquiler/renta de películas como puede ser, por ejemplo, Blockbuster.

Creación de la base de datos

Entren al MySQL Administrator. Luego hagan clic en ‘Catalogs’. Van a ver que abajo a la izquierda les apareció un cuadro con todas las bases de datos que tienen en este momento. MySQL las llama “schemas”. Hagan clic derecho sobre el cuadro y elijan “Create new schema”. Pongan de nombre “movierent_development” y den ok. La base de datos esta creada. Por convención, “movierent” deberia ser el nombre del proyecto.

La razón por la cual al nombre le estamos poniendo “_development” es porque estamos creando nuestra base de datos de desarrollo. El proyecto creado en RadRails automáticamente trabajara con esta. Además, RadRails puede trabajar en ambientes no solo de desarrollo sino que también de prueba y producción, en cuyo caso por defecto los nombres de las bases de datos son “proyecto” + “_test” o “_production”.

Creación de la aplicación web - Proyecto

Lo primero es crear un proyecto de Rails como vimos en el artículo anterior, utilizando RadRails. Asegúrense de ponerle “movierent”. Asegúrense de que tener marcados los checkboxes que crean el skeleton, como base de datos elijan MySQL, y elijan un servidor WEBrick.

Creación de la aplicación web – Ventanas en RadRails

Vamos a precisar vistas a dos ventanas para poder hacer esto, la ventana ‘generators’ y la ventana ‘rake tasks’. Si ya las tienen, salteen el paso.

Apreten ‘window->show view->other’. Ahí abran la carpeta correspondiente a Rails y seleccionen ‘Generators’ y después hagan lo mismo para ‘Rake Tasks’. Les pueden aparecer en esa micro ventana que hay abajo a la derecha, a mi me resulto cómodo arrastrarlas y encastrarlas en la ventana de abajo al centro, la que tiene los servers.

La ventana de generators nos va a permitir crear múltiples componentes de aplicaciones de Rails mediante scripts. La ventana de ‘Rake Tasks’ sirve para ejecutar algunas tareas relacionadas con el build de nuestro proyecto con facilidad.

Creación de la aplicación web – Crear un scaffold

Ahora vamos a crear una aplicación que haga altas, bajas y modificaciones de películas con escribir prácticamente solo un par de líneas y eso será posible gracias a un scaffold. El scaffolding es una de las características mas importantes de RoR a la hora de hacerlo mas rápido en tiempos de desarrollo frente a otros frameworks.

Scaffold quiere decir andamio. El concepto es que al generar un scaffold construimos un andamio alrededor de una entidad de negocios que nos permitirá manipularlo fácilmente mediante una aplicación web sencilla. Siguiendo el patrón MVC, el scaffold creara el Model, las Views y el Controller asociadas a esa entidad.

Esto nos da una velocidad enorme para prototipar y comenzar a ver resultados rápido. A medida que vamos trabajando podemos ir reemplazando las operaciones generadas por el scaffold por las propias nuestras, hasta llegar al resultado final.

En este caso, vamos a crear uno para manipular películas. Consideraremos que una película tiene los siguientes campos:

  • Nombre

  • Duracion en minutos

  • Fecha de edicion

  • Tipo (DVD|VHS)

  • Sinopsis

Para crear el scaffold, vamos a la ventana de generators y en el combo elegimos ‘scaffold’. En la parte de parámetros es donde especificaremos el nombre de la entidad más todos sus campos. Debemos ingresar lo siguiente:

Movie name:string duration:integer releasedate:date dvd:boolean synopsis:text

La sintaxis incluye el model seguido de todos sus campos, especificados como ‘nombre:tipo’. El único tipo de datos básico que quedo fuera del ejemplo es ‘float’.

Eso debería bastar. Si en el explorador del proyec

to van a app/models van a ver un archivo movie.rb que es el fuente correspondiente a su model. En app/controllers y en app/views, aun más archivos han sido creados para completar los elementos que faltan del MVC.

Usando los generators, de la misma forma que creamos el scaffold, pudimos haber creado el model y el controller por s

eparado, si así lo hubiésemos querido.

Creación de la aplicación web – Migración de la base de datos

Lo único que falta ahora es crear la tabla en la base de datos. Esto también se hace de forma bastante automática. Si miran dentro d

el explorador del proyecto, se van a encontrar una carpeta ‘db/migrate’. Esta tiene un script correspondiente a su model, con todos los campos especificados por ustedes.

Correr ese script les genera automáticamente la tabla. Para esto previamente tienen que seguir dos pasos.

  • Editen el archivo database.yml dentro de config en el explorador del proyecto. Estamos trabajando en el ambiente de desarrollo, así que en la parte que dice:

development:

adapter: mysql

encoding: utf8

database: movierent_development

username: root

password:

host: localhost

Donde dice ‘password’ pongan su password para el usuario root de MySQL. Guarden el archivo.

  • Corran el script. Para eso elijan la ventana de ‘Rake tasks’, y en el combo pongan ‘db:migrate’. Presionen ‘Go’.

Después de esto, solo nos queda probar que efectivamente funcione lo que hicimos.

Creación de la aplicación web – Probarla

Lo primero es arrancar el servidor web sobre el cual corre la aplicación. Chequear la ventana de servers que esta abajo al medio. Busquen un server que se llama “movierentServer”.

Si en la columna de status dice ‘stopped’, hay que iniciarlo. Para eso apretan la flecha verde de arriba de la misma ventana, que corresponde con ‘start server’. Al cabo de unos momentos va a decir ‘running’.

Además, es en el server que pueden configurar en que ambiente quieren trabajar, si en desarrollo, prueba o producción. Para eso, con el server parado, hacen clic derecho sobre el mismo y presionen ‘edit server’. No lo vamos a hacer ahora.

Abran su web browser, si usan Firefox mejor. Entren a http://127.0.0.1:3000/movies. 127.0.0.1:3000 es donde esta corriendo el servidor por defecto y /movies indica que queremos entrar a la pagina principal del ABM de movies. Cuidado, si ya tienen otro proyecto es posible que el puerto 3000 ya este asignado a este y que nuestro proyecto movierental tenga otro puerto, como el 3001. Tambien lo ven en la ventana de edit server.

La pagina principal es un listado de todo lo que esta en la tabla movies, de acorde a lo que creamos en el scaffold.

Si presionamos ‘new movie’ vamos a poder ingresar una pelicula nueva.

Después de confirmar su ingreso, la vamos a ver en el listado.

¡Felicitaciones! Hemos creado nuestra primera aplicación web con RoR. Experimenten un poco más con la funcionalidad de la mini aplicación que hemos creado. La conclusión que debemos sacar es que prácticamente con una sola línea de parámetros pasada a un script pudimos crear el ABM para una tabla, completo. En otros frameworks, para crear un ‘hello world’ sencillo, sin conocimientos previos, podemos estar alrededor de dos horas.

Por supuesto que en la vida real no vamos a trabajar usando scaffolds. Pero muchas veces se demora en presentar resultados y esto es lo que justamente hace que después uno sea vulnerable al cambio. Cuando se ve el software que tenemos hecho, después de que hemos trabajado mucho, nos damos cuenta de que no cumple con las especificaciones del cliente. Al poder prototipar rápido y fácil nos volvemos más ágiles, pudiendo reaccionar al cambio más rápidamente.


0 comentarios:

  © Blogger template 'Morning Drink' by Ourblogtemplates.com 2008

Back to TOP