Comunidad de diseño web y desarrollo en internet online

Por qué aprender Ruby on Rails

Una de las cosas que me dejó el 2012 fué conocer Ruby on Rails. Luego de haber navegado un poco por PHP, haber conocido CodeIgniter y luego probado Django con la guía de Maestros del Web, puedo llegar a la conclusión de que si tuviera que programar en un solo lenguaje para la web, lo haría usando Ruby a través de Rails.

Hace poco escuché hablar en mejorando.la a @freddier y @cvander de que promoverían Ruby onRails en 2013. Si has escuchado hablar o aún no has decidido si vale la pena aprender Rails en el año que iniciamos, voy a darte algunas razones que puedan motivarte a aprender Rails.



Está escrito en Ruby


Ruby es un lenguaje de programación orientado a objetos creado por un japonés de nombre Yukihiro Matsumoto, mejor conocido entre la comunidad como Matz. Esta persona decidió crear un lenguaje en el que fuera divertido programar. Sin lugar a duda, Ruby es un lenguaje poco convencional puesto que la sintaxis que utiliza es en varios aspectos distinta a la que estamos acostumbrados si aprendimos a programar con lenguajes como C, JAVA o PHP. Una de las cosas que me gusta de Ruby es que es lleva al extremo el paradigma de los objetos, en Ruby "CASI" todo es un objeto, de hecho hay discusiones incluso sobre si los métodos de los objetos son objetos... Parece confuso cuando empiezas a adentrarte en el lenguaje pero al final es una herramienta poderosa.

Otra de las razones por las que probablemente te guste Ruby es que puedes re escribir el comportamiento de cada parte del lenguaje, es decir, si deseas que la sentencia if se comporte de distinta manera, ¿adivina? Puedes hacerlo. Aquí un ejemplo:

Código :

classFloat
   defround_to(x)
      (self * 10**x).round.to_f / 10**x
   end
end

flotante = 0.0123123
flotante.round_to(2)



En el ejemplo anterior modificamos el comportamiento de un flotante (que también es un objeto) para añadir la función rond_to y más adelante lo usamos en un ejemplo. Esto es algo de lo mucho que puedes hacer con Ruby.

Promueve las buenas prácticas


No cabe duda que, sin importar qué lenguaje sea, si uno escribe mal código, así lo hará; mientras que por el contrario quien está acostumbrado a escribir buen código así lo hará. En Ruby y en Rails hay un sin fin de maneras de evitar repetir código (DRY) por ejemplo con el uso de layouts, lambdas y blocks, tenemos helpers, podemos ejecutar métodos antes de cualquier otro dentro de un controlador de modo que el código que escribimos una vez, no lo repitamos de nuevo. Consideremos el siguiente ejemplo:

Código :

classAppController<ApplicationController
   defindex
      client = YouTubeIt::Client.new(:dev_key => "my_dev_key")
      @canal = client.profile("mejorandola")

   end
   def videos
      client = YouTubeIt::Client.new(:dev_key => "my_dev_key")
      @canal = client.profile("mejorandola")
      @videos = client.videos_by(user: "mejorandola")
   end
end

Donde tenemos un controlador con código repetido en dos diferentes funciones que podríamos reciclar de la siguiente manera:

Código :

class AppController < ApplicationController
   before_filter :get_client
   def get_client
      @client = YouTubeIt::Client.new(:dev_key => "my_dev_key")
      @canal = client.profile("mejorandola")
   end
   def index
   end
   def videos
      @videos = @client.videos_by(user: "mejorandola")
   end
end

Y ahorramos líneas de código, cumplimos con el principio Don'tRepeatYourself y además hacemos el mantenimiento mucho más sencillo.

¿Frontend ninja?


Ruby onRails viene configurado por default para poder escribir javascript utilizando CoffeeScript y CSS utilizando SASS. De modo que si eres frontenddeveloper no puedes evitar querer aprender Rails, si no conoces SASS, esto es lo que te ofrece, entre otras cosas:

  • Hacer uso de funciones en CSS
  • Utilizar operaciones matemáticas y operaciones con colores.
  • Permite crear mixins, que es incluir un bloque de CSS en múltiples partes.
  • Tiene ciclos for, condicionales y variables.


¿Y CoffeeScript? Es escribir javascript de una manera más limpia con una sintaxis parecida a la de Python, sin puntos y coma, llaves y con sintaxis para los objetos mucho más limpia que utilizando la de javascript crudo, que por cierto CoffeeScript no tiene ningún problema con frameworks de javaScript como jQuery.

La arquitectura


Ruby onRails está construido bajo la arquitectura MVC (Modelo, Vista, Controlador) con lo que busca dividir el trabajo de un aplicación en diferentes puntos, el modelo se encarga de los datos, la vista del despliegue de los mismos y el controlador de pedir/recibir información del Modelo y enviársela a la vista para que el usuario pueda verla. El modelo MVC tiene un sin fin de beneficios, como por ejemplo, que puedas dividir el desarrollo con tu equipo de trabajo dependiendo de la habilidad de cada persona, el frontend sólo se encargaría de la vista, y los backendsdevelopers del controlador y el modelo.

Además, Rails cumple con los principios de otro modelo, el modelo REST. Sin querer ponerse muy técnico, entre varias cosas esto significa que utiliza las acciones CRUD (Create, Read, Update, Delete) del protocolo HTTP, en código eso se traduce en utilizar POST, GET, PUT Y DELETE como debe hacerse, y en cuestiones de beneficios eso significa que la misma URL puede llamar a las distintas acciones que te mencionaba, es decir:

Código :

 http://miaplicacion/productos/1

Que esa URL puede servir para mostrar el producto 1, borrarlo, actualizarlo y crearlo. Puede parecerte confuso al principio porque, por ejemplo, si deseas loguear a alguien, eso se traduce en CREAR una sesión, por lo contrario, el log out significa DESTRUIR la sesion.

Las Gemas


Entiendo que en Python tienen pip, y en PHP también hay un equivalente a las gemas (no recuerdo el nombre). Sin embargo, las gemas de Rails son un punto más alto, y eso me lleva a contarte algo, en la comunidad de Rubyeros hay un lema que dice

Comunidad Ruby :

Si "Matz" es bueno, nosotros también.

O al menos ese fue mi intento de traducir "Matz is nice, so we are nice" y es que la idea es querer aportar algo al mundo del que vivimos (programamos), así es como han crecido las gemas, hay gemas muy famosas para trabajos complejos, por ejemplo aquellas que te permiten trabajar con SASS y CoffeeScript, otras que te permiten integrar Facebook o Twitter en tus aplicaciones, algunas más para crear sistemas de logueo como Device, en fin, existen tantas que incluso hay una sobre NyanCat.

La comunidad de Ruby es amplia y tiene ganas de ayudar, encontrarás múltiples recursos que facilitarán, pero sobre todo, agilizarán tu proceso de desarrollo, y un ejemplo muy claro es el sin número de Gemas que hay allá afuera.



Inspiró a otros


No es por querer armar polémica, pero comúnmente me digo, si hay otros frameworks que han sido inspirados por Rails (ejemplo Grails o CakePHP) ¿por qué usar un derivado en lugar del original? Sé que las razones tienen que ver con el gusto al lenguaje que más te guste, pero si hay frameworks construidos para mimetizar Rails en otros lenguajes, debe ser por algo ¿no?.

Algunas cosas más


Aún hay mucho que hablar sobre beneficios de Rails, sin embargo, con la intención de no hacer más largo el post las mencionaré a grandes rasgos sin que signifique que son menos importantes.

El manejo de base de datos es amor al programador en Rails, es genial. Puedes trabajar en una BD y luego con toda la facilidad del mundo cambiar de gestor sin que esto sea un dolor de cabeza, pasar de PostgressSQL a Mysql o Sqlite no debería ser cuestión de pánico en Rails. ¿Hiciste una modificación a la estructura equivocada? No te preocupes, en Rails hay un concepto que se llama migraciones que son modificaciones a la base de datos que se guardan en una especie de pila y puedes revertir cambios que no te hayan gustado, de nuevo, sin que esto te quiebre la cabeza.

Rails está bien respaldado, en sus inicios Twitter estaba hecho sobre el framework, Github utiliza rails también, Heroku y un sin fin de startups deciden programar en Rails, hay gente que cree que no es escalable basados en el argumento de que Twitter tuvo que mudarse a Scala, en lo personal creo que cuando llegas al nivel de Facebook, Twitter, es inevitable que tengas que hacer algunas cosas oscuras en el servidor para soportar el tráfico que ellos reciben, y por otro lado se ve Rails funcionando en otros lugares con mucho tráfico sin problemas.

Como mencionaba antes, muchos startups, agencias de desarrollo y demás eligen Rails como primera opción para el desarrollo de productos, lo que para tí como programador significa trabajo, mucho trabajo y muy bien pagado, leía que un programador de Rails puede llegar a ganar 300USD por hora en Estados Unidos, y según una encuesta de Software Gurú, Ruby es el tercer lenguaje mejor pagado detrás de Objective-C y Cobol.

Ruby on Rails en el 2013


Aún cuando no hay fechas para al salida de la versión 4 del framework, puede esperarse en este año puesto que ya se han revelado varias de las características que se añaden al core de Rails, por ejemplo:

  • Parámetros fuertes, el filtro de parámetros se hará ahora desde el controlador.
  • ActiveSupport::Queue
  • Cache Digests
  • Y algunas improvisaciones al ActiveRecord y el manejo de los routes.


En fin, los beneficios de Rails son muchos, y probablemente faltó mencionar el manejo sencillo de relaciones en Rails, el ActiveRecord, migraciones más a detalle, la configuración de los Routers, que al menos en mi experiencia al trabajar con otros frameworks, son otras razones por las cuales programar en Rails es una buena opción.

Si deseas aprender Ruby o Ruby on Rails, puedes visitar la página de Código Facilito. aunque es mi intención subir algunos tutoriales sobre el framework.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate