Estuve escuchando la plática de @dhh el creador de Rails en la RailsConf, habló de las cosas que habrá en Rails 5, además de sus convicciones para ser parte de la comunidad de Rails.
Decidí escribir un mini post con las 3 características principales que mencionó que tendrá Rails 5, son cosas muy interesantes que pienso que pueden servir para motivar a algunos a probar el framework, en caso de que quieras empezar a aprender desde hoy Rails puedes ver nuestro curso de Rails.
TurboLinks 3
No es secreto, y en la plática queda más que claro, que DHH no es fan de las SPA (Single Page Application) y por tanto de los frameworks MVC en el cliente (Angular, Ember, Backbone), sin embargo, él como el mundo de desarrollo reconoce que las Single Page Apps tienen un sentido de velocidad y parecieran ser más responsivas que las aplicaciones web tradicionales, esto porque no recargan la página y sólo recargan los datos necesario. Al mismo tiempo, DHH como otras empresas, reconocen el poder y los beneficios de los sistemas integrados y del poder de hacer el render de las vistas en el server, en lugar de en el frontend como hacen los frameworks de javaScript.
Para integrar ambos lados de la moneda, el poder del servidor y los beneficios de sólo recargar los datos necesarios de la página, Rails 5 vendrá con TurboLinks 3, no es un nuevo framework si no la evolución de algo que ya hacía Rails; Rails 4 vino por defecto con TurboLinks, en su momento, para no tener que recargar los assets de la página, TurboLinks reemplazaba la página por completo con javaScript, pero el CSS y el javaScript ya estaban ahí, por lo que la página parecía cargar más rápido. En Código Facilito usamos TurboLinks, y es a través de la librería que ves un mensaje de "Cargando" cada que das click en una página.
TurboLinks 3, como decíamos, es una evolución, ahora no sólo podrás recargar toda la página, si no también partes de ella, e incluso declarar secciones "permanentes" como por ejemplo la navegación de tu página, estas no se recargarán. Esto trae beneficios enormes me parece que traerá aplicaciones muy interesantes. Algo que también me parece genial de la integración de TurboLinks y Rails, es que puedes especificar en el controlador que sección de la página vas a recargar:
class CommentsController < ActionController::Base
def create
@comment = Comment.create! comment_params
redirecto_to @item.product, change: 'comments'
end
end
En el snippet de código anterior, extraído de la plática de DHH, vemos cómo sólo se recargará el elemento con id "comments". Es interesante poder hacer render desde el server, aunque queda claro que como mencionan en el siguiente tweet, esto parece violar algo del MVC:
We all talk about separation of concerns and responsibilities in rails, but why is it ok for controllers to know about DOM ids? #railsconf
— eugegim (@eugegim) abril 21, 2015
Rails API
Me gusta mucho esta frase, Rails ofrece más que sólo un API para aplicaciones escritas con frameworks de javaScript, recuerdo haberla escuchado del mismo DHH en algún podcast. Aún así es verdad que hay proyectos interesantes que son SPA's y que utilizan frameworks MVC en JS, para esos proyectos no necesitas un framework robusto, sólo necesitas un API, bueno, hasta ahora podrías usar algo como Rails API que es una versión de Rails sin toda la parte de las vistas y cosas que, bueno, no se necesitan cuando sólo tienes una API. Ahora, todo este poder vendrá en el mismo Rails, y para generar una aplicación de Rails que sólo será un API hacemos:
rails new mi_api --api
Boom! Listo para que crees un API para Angular, para Ember, para Backbone, para Android o para tu app iOs :)
ActiveCable
WebScockets para Rails 5. Real time! Sin preocuparnos por mucho javaScript y sobre todo sin toda la lógica que tiene que ir en el servidor, para hacer real time en Rails 5 sólo necesitarás:
- Un Broadcaster
- Un Channel
- Una objeto en JS con un método receive.
Action Cable is Rails 5 implementation of WebSockets. #railsconf @dhh keynote pic.twitter.com/38gaGnwQy9
— Michael Cheng (@coderkungfu) abril 21, 2015
No hay mucho qué decir por ahora, habrá que probarlo. Hay varios detalles en la plática de cómo funciona que recomiendo ver, lo interesante es saber que Rails vendrá por default con la habilidad de comunicarse en tiempo real con las vistas, prepárense para tutoriales con Chats y ChatRooms :)
Conclusión
Todas las semanas se hacen cambios en Rails, así que tal vez esta sea una parte de lo que veremos nuevo en Rails 5, lo que sí es verdad es que ActionCable tomó por sorpresa (en el buen sentido) a muchos, y parece ser un cambio muy importante que de seguro permitirá la creación de aplicaciones en Rails. Por otro lado, veremos si TurboLinks gana un poco más de amor en la comunidad Rails, que al parecer no es muy feliz con la librería, porque bueno.. "es un juguete" pero como el mismo DHH mencionó:
"I love toys. If we didn't have toys, then we'd be adults. That's no fun." #railsconf
— Laura Mosher (@LauraTrev) abril 21, 2015
"Sin juguetes sólo seríamos un montón de adultos. No gracias!"- DHH
¿Qué les parecen las nuevas características? Agreguen en los comentarios su opinión y observaciones ¡Gracias! :)