Definindo Versões Mínimas de Navegadores com allow_browser no Rails de Forma Eficiente

Definindo Versões Mínimas de Navegadores com allow_browser no Rails de Forma Eficiente
Photo by Denny Müller / Unsplash

O Rails 8.0 introduz um recurso poderoso chamado allow_browser, que permite aos desenvolvedores especificar versões mínimas de navegadores para suas aplicações. Essa funcionalidade oferece várias vantagens significativas que valem a pena considerar.

Ao impor versões mínimas de navegadores, você mitiga vulnerabilidades de segurança não resolvidas, melhora a eficiência operacional e garante compatibilidade contínua com as funcionalidades modernas da web. Essa abordagem protege os dados dos usuários com patches de segurança atualizados, otimiza o desempenho e promove uma experiência unificada para todos os usuários da sua aplicação. Além disso, ao especificar uma versão mínima de navegador, os desenvolvedores podem priorizar o uso de tecnologias modernas, simplificando o fluxo de trabalho de desenvolvimento e minimizando as tarefas de manutenção contínua.

Implementando allow_browser no Rails 8.0

Com o Rails 8.0, definir as versões mínimas de navegadores é simples, utilizando o método allow_browser no ApplicationController. Veja como implementá-lo:

Configuração Básica

Para especificar as versões mínimas de navegadores suportadas, inclua o método allow_browser no seu ApplicationController:

class ApplicationController < ActionController::Base
  allow_browser versions: :modern
end

Usar a configuração :modern garante a compatibilidade apenas com navegadores que possuem suporte embutido para recursos como imagens webp, notificações web push, badges, import maps, nesting CSS e o seletor CSS :has.

Configuração Personalizada

Se preferir especificar versões mínimas para navegadores individuais, você pode personalizá-la da seguinte maneira:

class ApplicationController < ActionController::Base
  allow_browser versions: { edge: 88, chrome: 90, opera: 75 }
end

Essa configuração permite todas as versões de Safari e Firefox, mas restringe o suporte ao Edge 88+, Chrome 90+ e Opera 75+.

Desativando Navegadores Específicos

Você também pode desativar o suporte para determinados navegadores, se necessário. Por exemplo, para desativar o Firefox:

class ApplicationController < ActionController::Base
  allow_browser versions: { safari: 20, firefox: false, ie: 9 }
end

Adicionar allow_browser ao ApplicationController aplica essa configuração globalmente a todas as ações. No entanto, você pode restringi-la a ações específicas usando as opções only ou except.

Restringindo a Ações Específicas

Para aplicar essa configuração a ações específicas do controlador, use:

class ChatController < ApplicationController
  allow_browser versions: { chrome: 85, opera: false, ie: 9 }, only: :show
end

Nesse exemplo, a ação show do ChatController verifica se a versão do Chrome é pelo menos 85 e se a versão do Opera é pelo menos 9. A ação show não oferece suporte ao Opera.

Página Personalizada para Navegadores Não Suportados

Navegadores não suportados serão redirecionados para uma página personalizada (426.html) que explica a necessidade de atualizar o navegador. O código de status HTTP será 426 Upgrade Required.

Conclusão

O uso do allow_browser no Rails 8.0 facilita a definição de versões mínimas de navegadores, permitindo que sua aplicação funcione com segurança e eficiência nas plataformas mais modernas, enquanto reduz a carga de manutenção e oferece uma experiência de usuário mais consistente.