relations. • Build a Domain Model inside the team using smart people from customer side. • Use all available tools for this. UML is good for this purpose.
blog in 15 minutes. • It’s really hard and painful to develop projects with complex logic. • It maps tables to models and that’s cool. • … but here comes Leak of Abstraction for complex queries.
a simple declarative language. • It’s very fast. • Actually ORMs do not allow you to really abstract from the DB. • The only real flaw is that you should develop your own Data Access Layer.
what to do, not how to do it. • It allows you to use code as a documentation. • It allows you to write code which a domain specialist can read, understand and approve easily.
Spec, Cucumber • Rails routing and associations • Some RESTful frameworks, like Sinatra, Cuba, etc. • Deploying/automation tools, like Capistrano, Chef, etc.
context ‘when the subject is an odd number’ do it ‘returns true’ do expect(1.odd?).to eq true end end context ‘when the subject is an even number’ do it ‘returns false’ do expect(2.odd?).to eq false end end end end
gems are wrappers over Savon gem. • Class per Service • Method redefinition in children’s Service classes. (WTF?!) • It's not possible to decorate input/output and handle exceptions raised from the API side.
high complexity of the domain model. • DSL is unconditionally awesome. • Rails is awesome for prototyping. • Use DDD with DSL together to get maximum benefit.