lunes, 21 de julio de 2008

¿Qué es Ruby on Rails?

Ruby on Rails (RoR), es un framework para crear aplicaciones web, que busca simplicidad y agilidad, permitiendo de esta forma crear aplicaciones con mucho menos código, tiempo y esfuerzo que otros frameworks mientras que reduce el trabajo de configuración al mínimo.

Cualquiera que haya participado en un proyecto de desarrollo grande esta enterado de la cantidad de papeleo y burocracia en la cual uno se va metiendo de a poco a medida que avanza en el ciclo de desarrollo y va generando más y más documentos. Frecuentemente, esta burocracia termina generando software extremadamente complejo, difícil de mantener y vulnerable a los cambios. Rígido.

El desarrollo ágil busca tener un proceso de desarrollo basado en “individuos e interacciones por encima de procesos y herramientas” y prefiere tener énfasis en “responder al cambio antes que obedecer a un plan”. El tema es lo suficientemente interesante como para escribir un articulo entero de él, pero básicamente, el desarrollo ágil busca adaptarse fácil a los cambios eliminando todas las cosas que te enlentecerían en ese sentido si uno siguiera un esquema clásico. Y no perder de vista que lo que importa son los resultados, por más que uno siga un proceso, si el proceso produce un fracaso, esta mal.

La mayoría de los frameworks para aplicaciones web no se adaptan especialmente al desarrollo ágil. Es aquí donde Ruby on Rails quiere hacer una diferencia.

Sobre Ruby

Ruby es un lenguaje de programación con tipos dinámicos, interpretado, reflectivo, orientado a objetos.

  • Que tenga tipos dinámicos quiere decir que el tipo de un objeto se determina dinámicamente cada vez que se utiliza. Por lo tanto, no tenemos que declararlo previamente. Por lo tanto en Ruby, las siguientes líneas de código son validas:

resultado = 1 + 1

resultado = “dos”

  • Que sea interpretado quiere decir que la implementación del código se realiza a través de un interprete, un programa que va ejecutando línea por línea del código, en lugar de ser compilado. Como no hay que compilar, el ciclo de modificar código, ejecutarlo y testearlo se hace mucho más rápido. Que sea interpretado facilita que pueda tener tipos dinámicos, reflection, que sea multiplataforma, y que sea más fácil de debuggear, entre otras ventajas. El código compilado se ejecuta mucho más rápido, por contraste.
  • Que sea reflectivo quiere decir que soporta reflection. Esta es una propiedad que permite que el programa se modifique a si mismo en tiempo de ejecución. Pueden leer mas y ver ejemplos acá
  • Que sea orientado a objetos quiere decir que sigue el paradigma de la Programación Orientada a Objetos. Explicar lo que es escapa al alcance de este articulo, y si uno no sabe lo que es, antes de seguir con RoR se debería leer un poco al respecto.

Sobre Rails

Rails es un agregado a Ruby. Además del framework, trae un montón de librerías y utilidades para generar código. En teoría, es tan ágil y liviano que permite desarrollar aplicaciones web diez veces más rápido que otros frameworks, como J2EE, sin sacrificar calidad.

Esto es posible porque Rails esta construido sobre dos principios, ‘convención antes que configuración’ (convention over configuration) y ‘no te repitas’ (don’t repeat yourself).

‘Convención antes que configuración’ es un paradigma de diseño que busca favorecer que los desarrolladores tomen menos decisiones y de esa forma, que la tarea de desarrollar sea más simple. En este caso, se trata de aplicar una convención de nombramiento de objetos y campos de tablas de bases de datos para que no haya que especificar como se hace.

Es decir, si tenemos una clase ‘Cliente’ es razonable que su tabla se llama ‘Clientes’. Al aprovechar esa convención nos ahorramos tener que escribir archivos de configuración que especifiquen como se hace un mapeo clases-tablas.

Tradicionalmente, los frameworks precisan muchos archivos de configuración, para mapear urls con clases y clases con tablas. Esa es una de las ventajas que tiene Rails.

Esto no nos restringe a romper la convención si queremos y especificar mapeos distintos a los que se establecen por defecto, pero perdemos parte de los beneficios.

‘No te repitas’ es un principio que intenta reducir la duplicación. La idea es que la información duplicada es difícil de mantener, da lugar a inconsistencias y por lo tanto, dificulta el cambio. Nos hace menos ágiles. Si este principio se aplica exitosamente, los cambios solo se hacen en un único lugar y todo un sistema mantiene una coherencia.

En RoR, esto se refleja de forma tal que no hay que definir los miembros de una clase que manipula datos, ya que los lee directo de las tablas correspondientes.

Además, Rails esta basado fuertemente en el patrón MVC (Model View Controller). En este patrón se busca aislar la lógica de negocios de la interfaz de usuario, donde el Model representa los datos de la aplicación y las reglas de negocios, el View es la interfaz que se usa para interactuar con los datos y el Controller se encarga de realizar la comunicación entre Model y View. Esto causa que podamos cambiar fácilmente la apariencia visual o la lógica de negocios sin que los cambios de una tengan un impacto en la otra.

0 comentarios:

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

Back to TOP