Rails e Next.js: a combinação perfeita para o desenvolvimento web moderno

O Next.js, dentre outros ótimos frameworks Javascript, vem evoluindo muito durante os últimos meses. Assim como qualquer outro bom framework, a comunidade ou até empresas privadas, possuem um papel fundamental nessa evolução.

Como desenvolvedor full-stack utilizando Ruby on Rails durante mais de 10 anos, tenho me mantido atualizado e fico sempre com olhar atento nas tecnologias Javascript que sempre aparecem no mercado. Na minha posição, a grama do Javascript sempre me pareceu mais verde que a do Ruby. Acho que mais por razão do marketing do que pela eficiência. Mas quando resolvia mudar de quintal, eu começavam a me deparar com alguns buracos e pedras que de longe não eram visíveis. Sem contar que eu sempre sentia saudades da minha cadeira bonita e confortável que sempre me esperava do outro lado.

O principal motivo que me levou a achar a grama do Javascript mais verde, era a parte de componentização existente em frameworks como o React e Vue. Existe até uma ótima biblioteca em Ruby com essa mesma estrutura desenvolvida para se integrar com o Ruby on Rails, a qual você pode encontrar em https://viewcomponent.org/. Durante o uso do View Component eu só consiga me ver tentando encontrar uma forma das coisas funcionarem como funcionavam no React. Mas no final, nunca eu conseguia chegar em algo tão bom como um componente desenvolvido utilizando React.

Pra quem ainda não pode usufruir de tudo o que o React tem a oferecer e ainda não teve oportunidade de experienciar como é utilizar componentização com React, eu indico dar uma olhada nessa fantástica biblioteca de componentes https://www.radix-ui.com/. Vale muito dar uma olhada nos exemplos de uso e até no código fonte do projeto para ver como criar componentes muito bem estruturados.

Ao meu entender, a comunidade React pôde contar com vários membros especialista que tinham o mesmo objetivo de chegar onde chegaram. Enquanto os desenvolvedores Ruby deram seu melhor pra tentar acompanhar, mas não puderam contar com todo o aparato do qual a comunidade Javascript teve acesso.

Depois de alguns anos indo e vindo de um lado para o outro, resolvi que era hora de remover a cerca e usufruir dos dois quintais ao mesmo tempo.

Entendi que há muitas letras no MVC (Model, View and Controller) do Ruby on Rails e que não faria mal trocar o V por R e fazer o meu Model, React and Controller.

Então foi isso. Sentado da minha cadeira bonita, agora eu consigo ver os meus dois quintais como um só e posso andar livremente entre eles. Ainda há buracos e pedras em ambos os lados, mas agora eu consigo tirar um pouco de terra de um lado pra tampar o buraco do outro.

Outros posts da série:

  1. https://medium.com/@raphox/rails-e-next-js-a-combina%C3%A7%C3%A3o-perfeita-para-o-desenvolvimento-web-moderno-parte-2-5681e962adee
  2. https://medium.com/@raphox/rails-e-next-js-a-combina%C3%A7%C3%A3o-perfeita-para-o-desenvolvimento-web-moderno-parte-final-43003e6f0feb

NextRails

Por fim, gostaria de compartilhar e lhe convidar para participar do desenvolvimento dessa nova gem chamada NextRails.

Se você, assim como eu, acha que o Rails é muito bom para ser trocado e que a adoção de um framework para frontend, como o React, é obrigatória. Venha fazer parte do projeto e me ajudar a mostrar que a união do Rails e React pode ser algo simples e organizado.

Lembrando que a gem usa a estrutura de rotas de páginas e a geração estática do Next.js. Dessa forma, você só precisa de um servidor web para servir as rotas da API do Rails e o HTML/JS do Next.js.

Sempre fui apenas um especulador do ruby. Como sei programar já em outra linguagem se tornou simples entender como funciona o ruby e a forma de criar as estrutras de dados.

Passei então ao rails. Curti muito, mas nunca passei do Getting Started pois a questão de vagas sempre me pareceu muito menor que demais tecnologias. Inclusive pelo momento de carreira que me encontro, ja consolidado com JS me fez ter receio um pouco de investir pesado e fazer uma transição. Ruby virou um hobby pra eu treinar algoritmo e pensar um pouco fora da caixa do JS.

Na sua opinião vale a pena utilizar o rails como api e no front um vite/next ? Seria assim hoje que o mercado de rails está construindo novos projetos ?

Fala @mako, obrigado pelo seu comentário. > Na sua opinião vale a pena utilizar o rails como api e no front um vite/next ? Então, como disse no post eu tenho trabalhado com Rails por alguns anos e talvez minha resposta mais direta é que pra mim vale a pena sim. Mas não seria apenas por comodidade. Na minha visão, o ecosistema de Rails é muito mais maduro e estável que os ecossistemas do frameworks Javascript. Eu também estou pensando com relação a separação do backend e frontend. Quando eu comecei a programar não existia essa separação e você tinha que conhecer ambos. Depenendo da sua estratégia e ambiçao, você terá desafios diferentes: 1. Se você está começando agora e não pretende ser um desenvolvedor Fullstack, talvez nem precise se precupar tanto com isso. 2. Se for backend, escolha a linguagem que se sentir melhor. Ruby e Javascript são boas alternativas excelentes para o desenvolvedor e também para o mercado. 3. Se for frontend eu sugiro que adote um framework tipo React ou Vue. E recomendo fortemente utilizar algo tipo Next ou Nuxt, assim você já aprenderá seguindo padrões de desenvolvimento já validados e não se sentirá tão perdido. 4. Como fullstack talvez aprender as duas linguagens não seja necessária. Mas isso vai depender o quando você gostou do Rails. Mas o Javascript no desenvovimento fullstack não é algo opcional. 5. Agora pensando em uma equipe e um desenvolvimento rápido e bem estruturado, eu acredito fielmente que a junção do Rails com o Next é algo a ser considerado. Eu falo alguns motivos aqui https://medium.com/@raphox/rails-and-next-js-the-perfect-combination-for-modern-web-development-part-2-308d2f41a767. > Seria assim hoje que o mercado de rails está construindo novos projetos ? Nessa parte eu confesso que estou indo na contra-mão da comunidade Rails. Eles estão propondo algo que é bem diferente dessa abordagem. Eles estão utilizando o https://hotwired.dev/. Eu até já fiz alguns estudos validando o Hotwire (https://medium.com/@raphox/rails-7-hotwire-turbo-stimulus-modern-web-applications-d9dab177bdcb), mas no final eu concluí que o uso do React seria uma abordagem mais moderna e organizada de se fazer as coisas.

Gostei muito da proposta. Vou dar uma estrela agora no GitHub. E claro, gostaria de contribuir para o projeto. Vou dar uma olhada e se não se importar vou abrir alguma issue se houverem dúvidas ou sujestões.