# rom-rb/rom

Data mapping and persistence toolkit for Ruby

Repository: https://github.com/rom-rb/rom
Canonical: https://ross.abutalabs.com/products/rom
Homepage: https://rom-rb.org
Language: Ruby
License: MIT
License Family: permissive
Topics: ruby, databases, data-access-layer, sql, nosql, toolkit, rom-rb, ddd, persistence-toolkit, data-mapping
Last push: 2026-01-15T10:52:00+00:00

## Health v2 (maintenance only)
Score: 68/100 (v2, computed 2026-09-02T17:46:02.011165+00:00)
- activity 62, release rhythm 57, longevity 100
- inputs: {"age_days": 4827, "days_push": 230, "days_rel": 286, "gap_med": 0, "n_releases_24m": 4}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 2108, forks 170 (observed 2026-08-28T04:06:14.091703+00:00)

## What it is
ROM (Ruby Object Mapper) is a data mapping and persistence toolkit for Ruby that provides powerful object mapping without limiting the underlying database's capabilities. It organizes persistence into composable layers - relations, repositories, changesets, and commands - keeping domain logic separate from persistence details.

## Use cases
- map database rows to plain ruby objects
- separate persistence from domain logic in ruby apps
- write composable sql queries without activerecord
- use a data mapper pattern orm alternative in ruby
- manage database changesets and commands
- work with sql and nosql datastores through one toolkit

## When to choose
- you want explicit separation between domain objects and persistence
- you need full access to your database's query power instead of orm abstractions
- you're building a ddd-style ruby application with layered architecture
- you prefer plain structs over heavyweight model objects

## When to avoid
- you want a batteries-included activerecord-style experience with minimal setup
- your team is small and a conventional orm is simpler
- you need rapid prototyping without learning a layered data-mapping architecture

## Facets
- artifact type: library
- maturity: active
- function: orm, database, database-driver, serialization
- domain: databases, web-development, backend, developer-tools
- platform: ruby, cross-platform
- tags: data-mapping, persistence, ddd, repository-pattern, sql, nosql, data-access-layer, changesets

## Member repositories
- rom-rb/rom (main) score 68

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:06:14.091703+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T02:53:53.797251+00:00, confidence not recorded.
  - readme: https://github.com/rom-rb/rom (fetched 2026-08-28T04:06:14.091703+00:00, sha 6b9ab173cefa)
  - homepage: https://rom-rb.org (fetched 2026-08-29T10:34:02.264896+00:00, sha 1c53fcf9ebf2)
  - site_page: https://hanakai.org/learn/rom (fetched 2026-08-29T10:34:02.267521+00:00, sha 2ba2af5c9278)
- Data as of 2026-08-30T08:39:29.467469+00:00.
