Hexagonal
Hexagonal architecture separates the application core from adapters.
architecture :hexagonal,
application: %w[app/services/**/*.rb app/use_cases/**/*.rb],
domain: "app/domain/**/*.rb",
ports: "app/ports/**/*.rb",
adapters: %w[app/adapters/**/*.rb app/integrations/**/*.rb]
This creates four components:
applicationdomainportsadapters
The core rules are:
domainmust not useadaptersportsmust not useadaptersapplicationcan usedomainandportsadapterscan useapplication,domain, andports- no cycles across the four components
Use the Rails defaults with:
preset :rails_hexagonal