Asset pipeline: Propshaft
O Propshaft é o asset pipeline padrão do Rails 8, e este curso lê o código instalado da gem junto com um app Rails. Ele mostra como um hash do conteúdo no nome do arquivo deixa uma URL segura para ficar um ano em cache. As aulas tratam do load path, dos assets servidos na requisição em desenvolvimento, da reescrita de url() no CSS e da divisão com o importmap-rails. Também tratam dos resolvedores dinâmico e estático e do assets:precompile no Dockerfile. A última aula segue o tailwind.css da origem até a URL e termina com um desafio em Ruby.
O que você vai aprender
- ✓Como nomes de arquivo com fingerprint deixam o navegador guardar assets em cache com segurança
- ✓Como o Propshaft monta o load path a partir de app/assets e dos diretórios das gems
- ✓Como o Propshaft::Server calcula o digest e serve assets na requisição em desenvolvimento
- ✓Como as referências url() do CSS são reescritas e como o importmap-rails mapeia módulos JavaScript
- ✓Como o Propshaft escolhe entre o resolvedor dinâmico e o estático
- ✓Como o assets:precompile grava o manifesto usado em produção
Um trabalho: transformar um arquivo em uma URL cacheável
Toda folha de estilo e todo script que um navegador carrega precisam de uma URL. Essa URL tem um trabalho difícil: dizer ao navegador por quanto tempo ele pode guardar o arquivo sem perguntar de novo ao servidor. Erre para um lado e todo visitante baixa o mesmo CSS inalterado a cada requisição,…
Ler a aula completa grátis →Currículo
7 aulasUm trabalho: transformar um arquivo em uma URL cacheável
Por que URLs de assets precisam de fingerprint e como um hash do conteúdo no nome evita cache desatualizado.
O load path: onde o Propshaft procura assets
Como o Propshaft monta o load path a partir de app/assets e de gems, e onde entra o tailwind.css gerado.
Sem etapa de compilação: os assets ganham fingerprint na requisição
Como o Propshaft::Server dá fingerprint e serve assets a cada requisição em desenvolvimento, e como o digest SHA1 é calculado.
Referenciando assets: reescrita de url() e o import map
Como o Propshaft reescreve referências url() no CSS e divide com o importmap-rails o trabalho de servir JavaScript.
Duas tags de folha de estilo, e o resolvedor por trás delas
Como o stylesheet_link_tag resolve nomes lógicos e como o Propshaft escolhe entre o resolvedor dinâmico e o estático.
Indo para produção: assets:precompile e o Dockerfile
Como o assets:precompile no Dockerfile grava arquivos com digest e um manifesto, e como a produção os serve do disco.
Juntando tudo: um arquivo, seguido do começo ao fim
Segue o tailwind.css da origem até a URL em cache, em desenvolvimento e produção, com um desafio de fingerprinting em Ruby.