Visão geral de Rails engines
Engines Rails são apps Rails que moram dentro de outro. O curso lê esse padrão em gems de que um app já depende: Turbo, Stimulus, Tailwind, Active Storage, Action Mailbox e Action Text. Ele cobre o isolate_namespace e o que ele isola, engines com e sem rotas, o mount e a distinção entre full e mountable. Também compara nomes de tabela escritos à mão com esse isolamento, discute quando módulos de domínio não precisam virar engines e segue uma requisição do Active Storage por uma engine.
O que você vai aprender
- ✓Identificar quais gems de uma árvore de dependências são engines Rails
- ✓O que o isolate_namespace isola e o que continua compartilhado
- ✓Como engines acrescentam rotas com ou sem uma chamada mount
- ✓A diferença entre engines full e mountable
- ✓Quando namespaces Ruby simples bastam e quando uma engine faz sentido
Treze engines já rodando neste app
A busca encontra catorze gems na árvore de dependências deste projeto. Uma delas, a railties, só aparece porque define o próprio Rails::Engine, na documentação e no template de plugins novos. As outras treze definem cada uma uma classe no formato class Engine < Rails::Engine. Turbo, Stimulus,…
Ler a aula completa grátis →Currículo
7 aulasTreze engines já rodando neste app
Identifica treze engines na árvore de dependências do app e define engine como uma aplicação Rails dentro de outra.
isolate_namespace: o que ele isola
Lê o isolate_namespace em três gems e mostra que ele isola nomes, mas processo e banco continuam compartilhados.
Engines que adicionam rotas, e engines que não adicionam
Mostra que só Turbo, Active Storage e Action Mailbox acrescentam rotas, desenhadas direto no conjunto de rotas do app.
mount, e a distinção entre full e mountable
Explica o mount com o exemplo do Sidekiq::Web e como a opção --mountable parte do --full.
Tabelas isoladas: o precedente deste app
Lê a convenção de table_name_prefix e os nomes de tabela escritos à mão como a ideia que o isolate_namespace automatiza.
Quando os domínios deste catálogo são, e não são, engines
Mostra que engines compensam pelo reuso entre apps separados, por isso os módulos de domínio seguem como namespaces simples.
Juntando tudo: uma requisição pela pilha de uma engine
Acompanha a requisição de um logo do Active Storage por rota, controller e model, num só processo e banco.