ActiveStorage: variantes
Este curso acompanha como uma aplicação Rails trata imagens com ActiveStorage, a partir do código da própria aplicação. Ele explica variantes como receitas de transformação calculadas sob demanda pela libvips, e a diferença entre has_one_attached e has_many_attached, incluindo por que atribuir com = substitui as imagens e .attach acrescenta. Mostra um otimizador que converte uploads para WebP, limita dimensões, define qualidade e remove dados EXIF, e onde ele é chamado. Trata ainda de proxy contra redirects assinados, URLs legíveis para imagens de aulas e N+1 com anexos.
O que você vai aprender
- ✓Como variantes funcionam como receitas sob demanda sobre um único blob, processadas pelo vips
- ✓A diferença entre has_one_attached e has_many_attached, e por que .attach é mais seguro que =
- ✓Como um otimizador converte uploads para WebP, limita o tamanho, define a qualidade e remove o EXIF
- ✓Por que a otimização roda de forma síncrona na requisição do admin e como os blobs ganham nomes aleatórios
- ✓Como o modo proxy entrega URLs estáveis em comparação com redirects assinados que expiram
- ✓Como evitar N+1 em anexos com with_attached_ ou com um Preloader direto
O que é uma variante
Uma foto de perfil costuma aparecer em vários formatos: uma miniatura numa lista, uma prévia média num card, um recorte grande no próprio perfil. A saída ingênua é enviar três arquivos e cuidar de três registros. A resposta do ActiveStorage é a variant (variante): um arquivo enviado e quantos…
Ler a aula completa grátis →Currículo
7 aulasO que é uma variante
Variantes como receitas de transformação sobre um blob, processadas pela libvips, e o custo da primeira requisição.
Anexando uma imagem, ou várias
A diferença entre has_one_attached e has_many_attached, e por que atribuir com = substitui enquanto .attach acrescenta.
O pipeline de otimização de imagens desta aplicação
Um serviço que converte uploads para WebP, limita o tamanho, remove o EXIF e troca o blob no lugar.
Onde a otimização realmente é disparada
O controller do admin otimiza as imagens de forma síncrona na requisição e renomeia os blobs com hex aleatório.
Redirect ou proxy, e a ofuscação de URL desta aplicação
Por que esta aplicação serve arquivos via proxy do Rails em vez de redirects que expiram, e URLs legíveis de imagens.
N+1 e anexos
Como anexos geram consultas N+1, e quando a aplicação usa with_attached_logo ou um Preloader chamado direto.
Juntando tudo: uma imagem, do início ao fim
Um upload acompanhado por todas as etapas vistas, e por que o curso não tem desafio de código.