Clean Architecture Application Core Delivery Mechanisms Monolith First Anatomy Of A Project Hanami is based on two principles: Clean Architecture and Monolith First . Cle...
Multipart Delivery Single Part Delivery Remove Templates Built-in Strategies Custom Strategy Multipart Delivery By default a mailer delivers a multipart email, that has a H...
Rack Environment Rack Middleware Global Middleware Project Middleware Application Middleware Action Middleware Rack Environment Actions offer a high level API built on top...
Project Database Testing Framework Template Engine Project We can generate a new project via hanami new , followed by the name that we want to use. $ hanami new bookshelf...
During development and testing we don’t want to accidentally send emails to the real world. The delivery method for these two envs is set to :test . In order to assert that a m...
Autoloading in the app directory Autoloading in the lib directory Requiring gems Inflections Hanami uses the Zeitwerk code loader to support autoloading. This means that yo...
Example A mailer is an object that’s responsible to deliver a mail message, by rendering one or more templates. For simplicity, each mailer can handle only one use case (featur...
Setup Basic usage Aliasing Also known as many-to-many, is an association between an entity (Story ) and a collection of many entities (User ), passing via an intermediate enti...
Required and Optional keys Type Safety Macros Filled Maybe Each Confirmation Forms Rules Nested Input Data Composition Whitelisting Result Messages Output Error Mess...
Overview A New Feature: Email Notifications Callbacks? We Don’t Need Them! Concept Preparing Creating Our Interactor Creating a Book Persisting the Book Dependency Injectio...