Domain-Driven Rails

What's this about?

For a few years we’ve been studying Domain-Driven Design and applying its techniques in our projects. In Domain-Driven Rails we describe 11 techniques that you can use separately and together in new and old Rails apps to achieve better architecture. They were useful to us and we are sure they are going to be useful for you and your complex apps.

This book will teach you:

  • Why classes eventually reach 50 columns and hundreds of methods - and how to avoid it
  • Why it’s not enough to keep adding more horizontal layers such as service objects,form objects, serializers and instead why you should focus more on vertical boundaries
  • 3 techniques for modeling objects from your domain
  • Where to put the code which is not about domain logic
  • 2 types of Service Objects and which one is for what
  • The difference between commands and events
  • How to avoid explosion of Service Objects and keep things more cohesive
  • How you can make your system expendable and decoupled with domain events and handlers
  • Coordinate business processes with sagas
  • Making your classes smaller by extracting side-effects into handlers
  • Building unobtrusive reporting
  • Providing insight into temporal aspect of your domain with event sourcing
These techniques have been used for a long time in Java and .NET communities in complex, enterprise projects. But reading about them does not make it easy to figure out how to apply them in the context of Rails apps. That’s where our book comes in with help. Same techniques but explained using our language (literally and metaphorically).


Andrzej Krzywda

Andrzej Krzywda is the founder and CEO of Arkency, a Rails development company specializing in Domain-Driven Design (DDD).