The work on ROM initially started as an attempt to build the second major version of DataMapper project; however, in 2014 I decided to take the project in a different direction and turn it into an FP/OO hybrid toolkit that simplifies working with the data using Ruby language. It consists of a small(ish) core and plenty of adapters and extensions.
rom-rb suite including core, mapper, repository and changeset
SQL adapter for ROM with a powerful query API.
Elasticsearch adapter for ROM
Data generator with support for persistence.
...and many more. Check out rom-rb organization on GitHub to learn more.
The organization was created by Andy Holland in 2015. I was thinking about doing a similar thing so I decided to contribute and started working on a couple of gems under this org. The projects aim to be a modern take on solving common problems. Libraries are small and simple to understand with great focus on reusability.
An extendible type system for Ruby with support for coercions and constrained types.
Powerful and very fast data validation library based on predicate logic and rule composition.
A virtus-like attribute DSL for defining struct and value objects.
A high-level abstraction on top of dry-container and dry-auto_inject which provides a simple system for managing application's state.
...and many more. Check out dry-rb organization on GitHub to learn more.
Compose Ruby objects into a functional pipeline. Used by ROM as the data mapping backend.
Decorator pattern where the decorator type is preserved.
Famous Attribute DSL with coercions that I extracted from DataMapper. I stopped maintaining the project in 2015 to focus on dry-rb and its usage in rom-rb.
I was part of the DataMapper Core Team from ~2012 to ~2013. Then moved to working on ROM in late 2013 and due to a complete lack of time stopped helping with DM in 2015.
Coercion library used by Virtus