Skip to main content

Posts

Showing posts with the label cqrs

Ruby and CQRS - Command methods should return nothing

CQRS stands for C ommand Query Responsibility Segregation and the basic rules are: Commands - Perform (side effects) actions on the system and don't return values. Queries  - Return values but can't touch the system's state. Idealy, you don't mix them. Hence you can say, commands are dangerous, and queries are safe. Now, ruby doesn't have a specific type to say: this method (command) returns nothing, like void in C and other languages. So, the question is: How do you state that a particular method returns nothing? Based on comments from the ruby mailing list, people are using these approaches; 1. Return self. 2. Return nil. 3. Implicit return (which in general, ends up being nil). If I'd have to pick one, I'd go with the last one, but I also like to throw another option into the mix.... Why don't create a class for this particular use case? Let's say, Nothing! module Nothing class Nothing end def nothing @nothing ||= Nothi