O upload de arquivos no Rails facilita muito o trabalho inicial. Mas o que acontece quando a sua aplicação começa a crescer e receber tráfego real?
Exibir a imagem original que o usuário enviou direto na tela é um dos erros mais comuns de quem está começando. Imagina um usuário fazendo upload de uma foto com 10 megabytes. Se você renderizar isso em um feed com vários registros, a tela vai demorar uma eternidade para carregar e o pacote de dados do cliente vai para o espaço.
Na Live #38, resolvemos esse problema na prática. Peguei o projeto de base da Academia do Ruby e passei por todos os estágios para exibir imagens da forma correta.
O perigo do armazenamento local
Por padrão, o Active Storage salva os arquivos na pasta storage/ do projeto. Para o ambiente de desenvolvimento, isso funciona super bem. O problema aparece quando você vai para produção utilizando Docker, por exemplo. Se você não mapear um volume externo, sempre que o contêiner for reiniciado, os uploads dos seus usuários vão sumir. A responsabilidade de manter tudo a salvo fica totalmente na sua mão.
A solução profissional é usar o armazenamento na nuvem. Mostrei que o Rails se conecta nativamente com serviços como Amazon S3, Google Cloud, Cloudflare R2 e DigitalOcean Spaces. Utilizando uma API compatível com o S3, você transfere a carga do armazenamento e a entrega dos arquivos via CDN para plataformas feitas para aguentar o tranco.
Ainda não há comentários. Seja o primeiro a comentar!