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.
This talk is suitable for advanced Rubyists who want to enjoy the benefits of Ruby's great Object-Oriented and functional programming features in their Rails applications.
GoRuCo, 23rd June 2012
in the large
What does it
in the small
Your domain model is not in your
classes, it's in the communication
patterns between the objects at
— Steve Freeman & Nat Price
model is not
where you think
model is in
Procedural code gets information then
makes decisions. Object-oriented code
tells objects to do things.
— Alec Sharp, Smalltalk by Example
Tell, don't ask