I would, uh, be careful with ROM personally. It’s basically DataMapper 2 and my experience of DataMapper 1 was that it works very well right up until the point you put it under a bit of pressure and then you lose weeks or months of your life to debugging production issues. I’ve seen wrong queries, massive performance issues caused from the N+1 magic not working and them providing no explicit manual override, massive performance issues due to DataMapper deciding the best way to do this was to load the whole multi million row table into memory… For added fun, upgrading between minor versions was a process that took days of debugging.
It’s a shame because the authors are nice, intelligent, and seem to be fairly good at API design, but the success requirements on DataMapper 1 were too high and the quality of the internals just couldn’t live up to it. Hopefully ROM allowed them to fix a lot of these problems, but I personally wouldn’t want to touch it until I’d heard some serious “I used this in production and it was awesome” success stories.
ROM diverged from DataMapper project. Design-wise and functionality-wise it has very little to do with DataMapper. It’s not DataMapper 2. It doesn’t implement DM pattern. It’s not even an ORM any more.
For rom-sql we use Sequel under the hood and you construct queries yourself. This means you will never see a query that is not optimized for your use cases.
Please take a look at rom-rb.org/introduction to get a sense of what ROM has become eventually. More docs are coming up next week with 0.8.0 release.