Domain-Driven Rails Redux
Over the last 5 years, Rails apps have increased in size, complexity, and value provided to businesses. A few years back all we had to do was customize some generated code and sprinkle on a bit of AJAX, and the rapid pace of development meant that we could launch products and add features way faster than our competitors could. Nowadays, top Rails developers are charged with maintaining systems that generate millions of dollars of revenue, understanding complex domains, and integrating with partner systems. This new job description requires a shift in perspective from the “build a blog in 5 minutes” approach to Rails.
In this talk, I will continue my exploration of Domain-Driven Design as it applies to Rails development. After a brief discussion of the kinds of complexity found in Rails apps, I’ll show how Aggregates and Bounded Contexts can help manage that complexity. I’ll demonstrate techniques for treating ActiveRecord structures as aggregates, and how to decouple one aggregate from another. I’ll show you when you should start looking for different BCs, how to identify them, and how to begin carving them out. We’ll also look at how some of the new features from Rails 3, such as mountable apps, can be used to build modularity into a complex system.
If you’re a serious Rails practitioner, you should come to this talk. It’s my goal to make this one of the best talks at this or any other Rails conference. Problems that you may have that I aim to solve:
- Code that is difficult to understand
- Code that is resistant to change
- Slow-running test suites
- Knowledge silos
Most of all, this talk is about recognizing and managing the complexity within your app. In valuable applications, complexity is unavoidable. How we choose to manage it is up to us. If you don’t spend the time and effort to control it, it will control you.
Pat Maddox
Goldstar Events
I got into Rails pretty much from the get-go, not long after it was made publicly available for programmers to use. Since then I’ve worked on a dozen or so production Rails apps, and written countless toy and experimental apps. These days I help build the technology at goldstar.com.
My interests in Ruby/Rails are primarily in testing and high-level design. With Rails apps that have been running in production for 3, 4, or 5 years now, I think we need to shift our perspective a bit in order to keep up the pace of development that sets us apart from other languages and frameworks, so that we can continue to innovate and make money hand over fist.
Entitled “The BDD MoFo” by Dave Chelimsky, I’m somehow still a member of the RSpec core team :) Look for the (rough-cut e-version) book to drop soon!
I dropped out of college, which Dave Astels constantly ridicules me for, but it’s okay because I know he just envies my boyish good looks. I envy his wizard programmer beard.
CLEAN CODE FOR LIFE
Comments on this page are now closed.

















Comments
@Pat: I posted them on this page too, see above.
Hey everyone, slides are up online at www.patmaddox.com/stuff/rai...
Definitely would like to see some slides for this talk too.
I’m not sure your talk exactly matched the large-scope description, but that’s a good thing. Great job showing the real-world problem your company faced and explaining your solution. I love these kinds of examples.
Will your slide be available?