Adrian Marin, author of Avo, walks through the full lifecycle of packaging a Rails engine: generating a mountable engine, writing a gemspec, building gems in isolation with Docker, publishing to RubyGems, versioning with the bump gem, automating tests, linting, PR labeling, release notes and releases via GitHub Actions, and pre-compiling engine assets with esbuild/Tailwind behind a Rack::Static middleware. Q&A covers engines vs namespaces in monoliths, Webpacker-based engines, and avoiding model duplication across engines.
claude-opus-4-7b3cca4fd