Dentro del amplio mundo del desarrollo de aplicaciones web hoy en día nos encontramos con un gran número de lenguajes con sus respectivos frameworks. Lejos ya de los años en los que Java, PHP o ASP se posicionaban como únicas opciones con monstruos como Struts, Zend o .Net, lenguajes como Perl, Python o Ruby se han ganado un espacio entre estos gigantes.
Gracias al inconmensurable trabajo de Yukihiro Matsumoto “Matz”, creador de Ruby, podemos disfrutar de un lenguaje muy natural, flexible y por que no, agradable para el desarrollador (personalmente fue una de las cosas que me hizo dar el salto de Java y PHP a Ruby, disfrutar programando). Matz liberó la primera versión de Ruby en 1995 pero no fue hasta 2006 cuando alcanzo su punto de esplendor, ayudado por la publicación en 2005 de la primera versión de Ruby on Rails.
Ruby es simple en apariencia, pero complejo por dentro, como el cuerpo humano. (Matz)
Nacimiento de un framework de futuro
Creado por David Heinemeier Hansson, como parte de su trabajo en 37signals.com en el proyecto Basecamp (gestor de proyectos SaaS que nosotros mismos usamos en el día a día). Gracias a Rails fue como tope con Ruby y con la ferviente comunidad que lo arropa. En aquella época mediados del 2006 fue cuando probé por primera vez Rails (versión 1.1.2) tras haber leído parte de una tesis de Michel Barbosa, un estudiante de la Universidad Erasmus de Rotterdam, que acaba de publicarla y que lleva como título: “Delivery of the Key Adoption Factors and Key Characteristics of Companies Using Ruby on Rails”.
En ella se encuentra el dato de que el 92% de la empresas que cambiaron sus framework de desarrollo web a Rails fue por que ¡disfrutaban desarrollando! No me le creí y decidí probarlo, sólo me hicieron falta dos comandos para darme cuenta de las maravillas que me esperaban:
-
MCV aun que discutible en algunos casos, cada vez mejor definido.
-
Scaffolding para crear modelos, vistas y controladores de una tacada.
-
Convención de nombre muy cómoda y sencilla
-
Fuera XML hola YAML
-
DRY, REST y CRUD se incorporan al vocabulario del framework como una filosofía.
-
Toda la potencia de Ruby (sencillez, clases abiertas, metaprogramación …)
-
Una comunidad increíble creando gemas y plugins para casi todo.
-
Testing integrado con el proyecto desde un inicio
-
Flexibilidad para configurar y extender la gran mayoría de los objetos al vuelo
-
... no podía parar
Un poco de requisitos
Cualquier aplicación desarrollada en Rails corre en varios servidores web y es compatible con la mayoría de sistemas gestores de bases de datos (aun que el wrapper para Oracle es un poco infernal, funciona también :P). Apache y NGiNX son las principales opciones como servidores usando Phusion Passenger (aka mod_rails) como conector. A partir de ahí podemos darle mil vueltas, Mongrel, un cluster de estos, Lighttpd con FastCGI, Mongrels + Nginx…
Por dónde empiezo
Uno de los primeros pasas es empezar por al propia página de Ruby y visitar Tryruby donde podréis probar la sintaxis de Ruby ver como funciona para comprender los primeros pasos con Rails. The Ruby Way es una buena referencia para dar los siguientes pasos. Antes de que os deis cuentas estaréis programando de forma muy natural y espero que disfrutéis tanto que lo hacemos muchos ya.
Una vez que conocemos la sintaxis básica de Ruby es el momento de atacar a Rails. Una de las formas (y para mi la más divertida) de dar los primeros pasos es con Rails for zombies un site que os guiará a través de una serie de tutoriales donde explican las diferentes partes del framework y como trabajar con ellos (gratis claro).
Si ya te has enganchado después de un breve paso por The Walking Dead del mundo Rails es el momento de empezar a cacharrear. Ryan Bates (@rbates) es el creador de RailsCasts.org, en el momento que escribo este artículo va por el número #260… #260 motivos para probar y romper cosas, screencast desde un nivel básico hasta el uso de herramientas de benchmarking para sacar el mayor partido a os desarrollos.
Para arrancar ya con el código en nuestra máquina lo mejor es acudir a http://rubyonrails.org/download
Cómo no, IDEs
Como todo lenguaje Ruby tiene sus entornos de desarrollo, y tenemos bastante donde elegir. Los que más se usan actualmente es TextMate, Vim, Emacs, RadRails (basado en Eclipse, Netbeans o RubyMine.
Ahora mismo existe una corriente que está con Vim y otros que nos mantenemos fieles a TextMate (fuera de Mac, en entornos Linux su primo hermano es GMate, una adaptación de GEdit con extensiones que hacen que se parezca mucho a TextMate). Fuera de OSX o Linux, las principales opciones son RadRails y Netbeans.
Tanto en TextMate como en Vim después de llevar trabajando un tiempo con cada uno de ellos ya habréis ajustado Snippets, macros y acciones a vuestro gusto. Mi consejo es probar cada uno de ellos y desarrollar con el que os encontréis más cómodos.
El clásico blog en 15 minutos
Creo que todos a la hora de empezar con Rails hemos hecho este proyecto. A día de hoy hay cientos de blogs que tienen el artículo listo para su lectura, yo os dejo un enlace al vídeo paso a paso# para que lo probéis por vosotros mismos.
Los mitos sobre Rails
Para hablar de los mitos que existen sobre Rails necesitaría otro post aparte, pero lo resumiré de forma rápida, *Rails sí escala, como cualquier otra aplicación en cualquier otro lenguaje, eso dependerá de factores como el diseño de la aplicación, arquitectura escogida etc…
El otro y bastante sonado es que es duro de desplegar a producción. Como todos si eres fan de usar FTPs y volcados… Capistrano + Git (por ejemplo Github) y tras un setup no muy largo (no más de una hora la primera vez que montas uno) podrás hacer despliegues a golpe de un comando y pocos segundos.
Algunos mitos más son:
-
Rails falla con frecuencia
-
Rails es difícil por culpa de Ruby (obvio si no aprendes el lenguaje)
-
Rails solo funciona con Prototype (con la 3.1 jQuery será la librería JS por defecto)
-
Rails es poco maduro
-
Rails no está
echohecho para el mundo Enterprise (más bien creo que es al revés)
Comunidad hispana
El principal canal de distribución es la lista de simplelogica donde la cantidad de mensajes diarios es considerable.
Dentro de los podcast podemos destacar el podcast de RailsHispano.
Podría seguir escribiendo bondades sobre Rails y Ruby pero lo mejor es que probéis por vosotros mismos. Espero poder tener la oportunidad de volver a escribir algo más técnico sobre Rails en este gran proyecto como es Genbeta Dev ya que junto con Rails las metodologías ágiles como SCRUM, Kanban, XP van muy ligadas a Rails y sería bueno hablar sobre ello.
Pablo Formoso Estrada socio fundador de SoftwhipserSL, empresa dedica al desarrollo RoR y dispositivos móviles (iOS y Android), lleva en el mundo de las programación desde los 14 años. Ponente en la Euruko 2009 y colaborador con El Correo Gallego en algunas entrevistas tecnológicas. Ahora a sus 27 se define como amante de las metodologías ágiles y movilidad. A finales de año espera junto con su socio en Softwhisper poder sacar producto propio.
Twitter: @pabloformoso