Definindo Versões Mínimas de Navegadores com allow_browser no Rails de Forma Eficiente
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.