Rails 5, há algo de novo? (parte 1)
Dois anos e meio, é o tempo que separa o último release de uma major version do Rails, da atual (que ainda está no seu beta 2). Durante esse período MUITA coisa mudou no dia-a-dia do Desenvolver Web, o que faz com que a ansiedade pela nova versão do Rails, seja carregada também com dúvidas sobre o seu futuro.

Pra aproveitar que estamos usando o Rails 5 em um novo projeto na Vizir, vamos compartilhar nossas impressões do que vimos de novo.
De cara há duas mudanças e uma adição, que foram os motivos principais para a escolha do Rails 5, mesmo em beta, como parte do stack do projeto.
Action Cable — a grande novidade
Uma das grandes mudanças que ocorreu nos últimos dois anos, foi o surgimento de interfaces mais interativas. O que antes era visto como um nível difícil de se alcançar (só lembrar do Gmail em 2007), hoje virou de certa forma uma commodity.
Parte dessa facilidade se deve ao uso de WebSockets, que veio junto com o caminhão de mudanças do HTML 5 (engraçado como muitas novidades dele, ainda hoje não são tão conhecidas, parece aqueles itens de mudança que são esquecidos ainda embalados), e foi bem adotado com o uso do Socket.io.
Trello, Slack, Pusher e tantos outros, são exemplos de serviços que fazem grande uso de WebSockets, e agora com o Action Cable, o Rails também oferece uma forma simples de usar-lo. Facilitando a criação de funcionalidades real time, na sua aplicação Rails.
Para isso ele faz um mix de tecnologias e libs:
- Redis: utilizado para armazenar as mensagens (a primeira versão está bem acoplada ao Redis, mas parece que há intenção de no futuro possibilitar o uso de outras tecnologias que permitem pub/sub);
- websocket-driver-ruby: para ajudar na comunicação com WebSockets, ele usa bastante da lib criada pelo James Coglan, do Faye;
- concurrent-ruby: Para trabalhar com Thread Pools;
Além disso para trazer toda a abstração, também conhecida como magia, do Rails, o Action Cable nos apresenta dois frameworks: um JavaScript para você utilizar nas suas views, e outro server-side. Com isso, você não precisa ir afundo nas tecnologias citadas acima, para começar a usar WebSockets em suas aplicações Rails.
Concluindo…
Olhando para dentro do próprio Action Cable, podemos notar que o grande esforço que foi feito, foi realmente trazer a possibilidade de usar WebSockets, diretamente na sua aplicação Rails, já que boa parte dos componentes são “velhos” conhecidos da comunidade (inclusive o EventMachine foi usado por um tempo, que “perdeu” o lugar para o websocket-driver-ruby).
Ele é claramente uma resposta para o Rails continuar relevante, ao desenvolvimento Web atual, o que é louvável, e muito bem-vindo, e um sinal que o core-team está atento as novas necessidades.
O que vimos no beta, nos mostrou que ainda há muito espaço para melhoria, o que é natural para uma primeira versão. Sendo o grande “barato”, poder disparar eventos WebSockets direto da sua aplicação Rails. Diminuindo assim, um pouco a complexidade da aplicação. E trazer novos conceitos (os channels, que iremos aprofundar num post futuro), para simplificar o uso de WebSockets para os desenvolvedores que estão começando a criar funcionalidades real-time.
No próximo post, vamos falar dos outros dois pontos que nos fizeram escolher o Rails 5, a melhora na performance e o Rails API.
Ahh e se você ficou interessado em entender mais sobre o ActionCable, e ver ele em uso, ao invés, de só “blá-blá”. Pode ficar tranquilo, em breve iremos publicar um post com um hand-ons no ActionCable. Até lá! :)