Skip to content

methodmissing/aftermath

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aftermath

An example (and work in progress) Ruby implementation of CQRS (Command and Query Responsibility Segregation) as a reference for a session at SAPO Codebits 2010

Conceptual View

Implementation notes

A simple e-commerce / fulfillment Domain implementation with the bare minimum of framework infrastructure.

Directory layout :

  • lib/aggregates - aggregates with public behavior methods and private event handlers
  • lib/command_handlers - example
  • iib/commands - commands (behaviors, task, intent)
  • lib/domain - supporting domain code, mostly value objects
  • lib/events - events (history of intent)
  • lib/framework - infrastructure
  • lib/reporting - read / query model - one per UI screen

Please refer to inline notes in /lib/framework in the interim whilst this README's being prepared.

Caveats

A few very important details has been overlooked in favor of demonstrating patterns without noise of technical masturbation.

  • Simple in process pub/sub channels
  • In memory sqlite backend for Event Storage
  • Hash repository for the Query / Reporting side
  • Duck typing for Command and Event handlers as Ruby doesn't have a formal type system
  • No coercion or validation for messages (Commands and Events)
  • No UI components (I might introduce a light Rack or Sinatra one)

How to run the test suite

git clone git@github.com:methodmissing/aftermath.git
cd aftermath
bundle install
rake

CQRS resources

About

An example CQRS implementation in the Ruby language

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages