Arquitetura: engines privadas
Este curso examina engines do Rails e gems internas a partir de uma aplicação Rails. Começa pelas declarações de table_name_prefix em quatro namespaces, que 23 de 24 models sobrescrevem. Explica o que é uma engine e o que o isolate_namespace faz e deixa de fazer, e depois mostra o que muda se o Catalog virar uma engine. Compara quatro níveis de fronteira (namespace, engine, gem versionada e serviço), trata de gems carregadas por path, git e registro, e termina numa decisão: nenhuma engine, nenhuma gem, um spec de arquitetura de dez linhas e um ADR.
O que você vai aprender
- ✓Como funcionam o table_name_prefix e o isolate_namespace, e o que eles deixam sem proteção
- ✓O que muda e o que continua igual quando um contexto vira engine
- ✓Como namespace, engine, gem versionada e serviço se comparam em controle e custo
- ✓As diferenças entre gems por path, por git com ref fixo e por registro
- ✓Como um spec de arquitetura de dez linhas confere as fronteiras entre contextos
- ✓Como registrar a decisão num ADR com as condições para revisitá-la
A convenção de engine que já está aqui
Quatro arquivos desta aplicação declaram uma convenção de engine do Rails. Vinte e três models recusam essa convenção. Esse é todo o ponto de partida.
Ler a aula completa grátis →Currículo
7 aulasA convenção de engine que já está aqui
Quatro namespaces declaram table_name_prefix, 23 models o sobrescrevem e só o Community::Comment fica com o prefixo.
O que uma engine de fato é
Uma engine é uma aplicação Rails dentro de outra; o isolate_namespace evita colisão de nomes, mas permite qualquer referência.
O que muda se o Catalog virar uma engine
Levar o Catalog para uma engine mantém acoplamento, dados e deploy, traz uma suíte isolada e exige uma aplicação dummy.
Quatro níveis de fronteira
Namespace, engine, gem versionada e serviço comparados pelo que cada um garante, quanto custa e qual serve a cada contexto.
Gems privadas e distribuição
Carregar uma gem por path, por git com ref fixo ou por registro privado, quando versionar compensa e quanto custa.
A decisão para esta aplicação
A recomendação de nenhuma engine e nenhuma gem, com uma decisão sobre o prefixo, um spec de dez linhas e um ADR.
Juntando tudo: uma hora e dez linhas
Uma revisão das medições, da hora e meia de trabalho que vem depois, dos quatro níveis e dos hábitos.