Hexagonal Architecture for Ruby on Rails

In the early days of a project, Rails absolutely dazzles.Tragically, the very same forces that make it so easy to add new features to a brand new Rails application are the ones that start to hold you back as the number of features grows. Your test suite gets slower and slower, and refactoring becomes more and more of a chore. Everything seems coupled together, and it’s hard to see much of a structure other than the MVC triad.

In this talk, Matt explains why this happens, and shows you a way out, using a ports-and-adapters or hexagonal architecture to introduce a separation between your application’s domain logic and the Rails framework. The fundamental idea behind this style of architecture is to isolate the core domain of your program — the bit that defines its unique and interesting behavior — from the technical infrastructure that enables it to talk to the outside world. Technical infrastructure means things like databases, file systems, user interfaces, web services and message queues.

Video Producer: GoRuCo Conference

Related material: Hexagonal Rails: Objects, Values and Hexagons