Desarrollo de software con Ruby on Rails
Antes de entrar en materia, es importante aclarar que Ruby y Ruby on Rails no es lo mismo. Ruby es un lenguaje de programación surgido en 1993 de la mano de Yukihiro Matsumoto. Fue creado por la complejidad de otros lenguajes como Java y C++. Es flexible y preciso, lo cual da la posibilidad de organizar de una forma más eficiente el código escrito. La sintaxis, por su parte, está fundada en bloques de código, por lo que se evitan los errores al cambiar de línea de instrucción. Sin embargo, el lenguaje Ruby no saltó a la fama de forma internacional hasta 15 años después, en 2008, cinco años después de ser combinado con un framework denominado Rails. Esta combinación dio como resultado el marco de trabajo conocido como Ruby on Rails (RoR), creado por David Heinemeier Hasson en 2003 y muy popular entre los desarrolladores en los últimos años por su sencillez y su fundamento en las metodologías ágiles.
Rails extiende el lenguaje Ruby de la misma manera que .NET, Spring o Django extienden C#, Java o Python, respectivamente.
Qué es Ruby on Rails y para qué sirve
Teniendo en cuenta que en la propia web de Ruby on Rails lo definen como «un armazón para construir aplicaciones web que acceden a bases de datos», te puedes hacer una idea clara de para qué sirve Ruby on Rails… Pero, ¿esto es suficiente para entender esta herramienta?
Son muchos los usos de Ruby on Rails en una empresa, solo tenemos que ver para qué se ha utilizado con anterioridad: Twitter, Basecamp, Hulu, Xing, etc., y esto basándonos en multinacionales, si pudiéramos utilizar esta misma tecnología en un negocio más pequeño, con una pequeña inversión, ¿no sería una buena idea?
Ruby on Rails: sus principios y el patrón MVC
Ruby on Rails es un marco de trabajo cimentado en el patrón Modelo-Vista-Controlador o MVC. Este patrón permite la organización de las partes del software desarrollado en función de la finalidad de cada una. El objetivo de estas divisiones es claro: evitar que cuando se realicen cambios en una parte del código estos perjudiquen a otra parte.
Una parte del código no debe saber qué es lo que hace toda la aplicación, sólo debe tener una responsabilidad.
Cómo funciona el patrón MVC
Pero, ¿cómo funciona el patrón MVC? Cuando el usuario realiza una petición al software, es el controlador quien responde dicha solicitud. Acto seguido el controlador pide al modelo toda la información relacionada con la misma, imágenes, texto, vídeos, etc., quien la busca en la base de datos y la envía al controlador. Por último, el controlador con la información recibida la remite a la vista, la cual, se encargará de organizarla y construirla para que se vea respetando los estilos que el autor estableciese en su momento.
Ruby on Rails se apoya en dos principios fundamentales:
1.- Don’t repeat yourself (DRY) o, traducido al castellano, no te repitas. Según este principio, los desarrolladores Ruby on Rails deben evitar la duplicidad del código.
2.- Convención sobre configuración: a través de generadores se crea un árbol de directorios que organiza la estructura del proyecto. Los desarrolladores, mediante los archivos de configuración, podrán especificar los parámetros necesarios para su correcto funcionamiento. Esto supone que un modelo denominado, “User”, será automáticamente relacionado con la tabla «users» de la base de datos. Sin embargo, si esta no sigue la convención, deberá ser especificada de forma manual del siguiente modo: set_table_name “users_admin”. “Así, cuando se diseña una aplicación partiendo de cero sin una base de datos preexistente, seguir las convenciones de Rails significa usar menos código”.
3.- Por último está un lema entre desarrolladores que, si bien no es un principio propiamente dicho, podría incluirse entre ellos: “Test all the f*cking time” (TATFT), el cual, traducido de la forma más suave posible sería testea todo el rato. Este marco de trabajo utiliza la estrategia Test Driven Development (TDD). Esta estrategia se basa en escribir las pruebas, o test, antes de comenzar a escribir la funcionalidad solicitada.
Librerías Open Source o Gemas
La librerías de Ruby on Rails, comúnmente conocidas como gemas por su conexión con Ruby (rubí en castellano), ayudan a solucionar problemas de programación y hacerle el trabajo más fácil a los desarrolladores. Existen una gran cantidad de estas gemas que pueden ser descargadas e instaladas de forma totalmente gratuita. Si bien todas ellas facilitan enormemente el desarrollo del software de formas muy distintas, de entre ellas destacan seis por encima de las demás
Las mejores librerías
- Bundler: probablemente la gema mejor valorada entre los desarrolladores Ruby on Rails, ya que permite instalar de forma automática todas las gemas con las que contará el software a desarrollar a partir de un fichero gemfile.
- Devise: esta gema posibilita la introducción de un sistema de autenticación en cualquier app desarrollada.
- Omniauth: si bien es muy parecida a la anterior, se diferencia de esta en que el sistema de autenticación implementado es para conectarse a redes sociales como Twitter o Facebook.
- Paperclip: una gema muy utilizada en aquellos proyectos con mucha carga visual. Facilita en gran medida la integración de imágenes en el desarrollo, posibilitando también la modificación del formato y el tamaño, entre otras cosas.
- Kaminari: permite la división de los elementos en páginas de un modo muy visual. También ofrece la posibilidad de aplicar distintas plantillas en función de los gustos o necesidades del cliente.
- FriendlyId: ayuda a crear URLs amigables. Muy necesaria en los proyectos que pretenden sacar el máximo partido al posicionamiento SEO.
Grandes apps desarrolladas con Ruby on Rails
- Twitter: aunque desde 2011 esta construida sobre Java, la app de una de las redes sociales más famosas del panorama actual fue construida en un primer momento sobre Ruby on Rails, y por un equipo de tan solo dos personas.
- Kickstarter e IndieGoGo: las aplicaciones de las dos grandes plataformas de micromecenazgo o crowdfunding están construidas sobre este framework.
- Soundcloud: del mismo modo que Twitter, la comunidad líder en podcast y música gratuita, la cual recibe más de 175 millones de visitas al mes, desarrolló su aplicación en un primer momento en RoR. Si bien más adelante comenzó a utilizar el lenguaje Scala, la app aún mantiene partes del código de Ruby.
- Twitch: Ruby on Rails también está presente en la app de la plataforma más utilizada actualmente para la retransmisión de videojuegos en directo.
- Groupon: la web líder en ofertas y cupones de descuento también cuenta con una aplicación construida sobre Ruby on Rails y en la cual están registradas más de 35 millones de personas.
Ventajas de Ruby On Rails
- Ruby on Rails es un marco de trabajo que aumenta en gran medida la productividad, ya que está basado en las metodologías ágiles. Muchos desarrolladores lo califican como el “framework ágil por excelencia”.
- Como se dijo antes, RoR es una marco que se sostiene en el patrón Modelo-Vista-Controlador. Al poder dividir las partes del desarrollo, la escalabilidad de proyecto se ve simplificada, lo cual, beneficia enormemente a los desarrolladores permitiéndoles ahorrar recursos.
- Gracias a un uso eficiente del código, Ruby on Rails es un framework que favorece un desarrollo más dinámico de apps.
Ruby on Rails continúa siendo uno de los marcos de trabajo preferidos por los desarrolladores para crear software. Su sencillez frente a otros lenguajes. Las ventajas de Ruby on Rails frente a otros frameworls lo mantienen en las posiciones altas de los marcos de trabajo más utilizados en desarrollo de apps desde hace años.
DIGITAL55 y Ruby on Rails
En DIGITAL55 hemos desarrollado proyectos para grandes compañías con este framework. Entre ellos queremos destacar los siguientes proyectos de Ruby on Rails para empresas:
- Altadis. Plataforma digital para la planificación de fuerzas de venta.
- Acciona. Software de control y gestión de subvenciones I+D+I en la Unión Europea.
- Hospes. App para mejorar la experiencia del cliente en la cadena de hoteles de lujo Hospes.
- Ayuntamiento de Madrid. Infraestructura para la plataforma de presupuestos participativos y agendas online de concejales.