Skip to content
Lucas Caton

Rails 5.2 acaba de ser lançado; confira o que há de novo!

Grandes novidades nesta nova versão!

Lucas Caton

Lucas Caton

@lucascaton
Uma ferrovia atravessando o mar
A nova versão do Rails estava em beta (e rc1) desde novembro do ano passado e agora está finalmente disponível para todos!
Algumas novidades presentes nesta nova versão:

Active Storage

Sem dúvidas, o destaque da vez.
Desde quando foi lançado, o Ruby on Rails tem a premissa de ser um framework completo. O Active Storage foi adicionado ao Rails justamente para suprir uma funcionalidade a qual antes dependia de ferramentas de terceiros: upload de arquivos.
O framework traz suporte nativo aos serviços Amazon S3, Google Cloud Storage e Microsoft Azure Storage. A abordagem utilizada simplifica a tarefa e vem com recursos bacanas, como uploads direto para a nuvem (sem passar pelo seu servidor antes) e criação de thumbnails (miniaturas) de imagens, PDFs e até mesmo vídeos.
Curiosidade: Active Storage é mais um caso de código que foi extraído do Basecamp, da empresa fundada por DHH, criador do Rails.

HTTP/2 Early Hints

Rails agora suporta uma das coisas mais legais do HTTP/2: poder instruir o servidor (como o Puma, que já suporta isso) para enviar antecipadamente arquivos JS e CSS. Isso se traduz em uma entrega mais rápida das páginas.

Boot 50% mais rápido

A gem Bootsnap reduz o tempo para subir um servidor em 50% e a partir do Rails 5.2, ela é adicionada por padrão em novos projetos. Você também pode usá-la em projetos usando versões antigas do Rails, basta adicioná-la ao seu Gemfile.

CSP (Content Security Policy)

Uma nova DSL2 foi adicionada para configurar headers Content-Security-Policy, através da qual você poderá melhorar a segurança da sua aplicação.

Credentials

O arquivo de configuração secrets.yml foi criado no Rails 4.1 e transformado em um arquivo criptografado no Rails 5.1. Só que isso sempre foi meio confuso e alguns desenvolvedores não sabiam exatamente como (ou por qual motivo) usar, já que envvars3 resolviam o problema.
Para tentar resolver a confusão, agora foi criado o conceito de Credentials, descontinuando o suporte ao secret.yml (e sua versão criptografada).
Se isso resolverá mesmo o problema e cairá no gosto dos desenvolvedores, só o tempo dirá!

Suporte à gem Webpacker 3.0

Rails vem adotando soluções modernas para uso de JavaScript e manter uma boa integração com a gem Webpacker prova isso mais uma vez.

Redis Cache Store

Suporte nativo à cache usando Redis. Você encontra mais informações no pull request em que esta funcionalidade foi adicionada.

O que mais?

Obviamente, existe mais coisas que mudaram/evoluíram além dos destaques que listei acima. As notas de liberação contém algumas dessas mudanças menos relevantes, caso você esteja interessado.

Como atualizar?

Atualmente, atualizar um projeto para uma nova versão do Rails é uma tarefa relativamente tranquila (principalmente se comparada com as transições da versão 2 para a 3).
Uma boa cobertura de testes automatizados é altamente recomendada!

Rails 6?

Seguindo a tradição, essa será a última versão da série 5.*. O branch master do repositório do Rails já contém mudanças que só virão no Rails 6, o qual provavelmente veremos daqui a aproximadamente 1 ano e meio, se o histórico de lançamentos for similar aos que tivemos até hoje.

Footnotes

  1. Release Candidates: versões beta com potencial para serem a versão final
  2. Domain-specific language (Linguagem de domínio específico): métodos ou códigos específicos dedicados à um domínio de problema particular
  3. Environment Variables (variáveis de ambiente): configurações disponíveis "globalmente" em um computador ou servidor