{"adoption": {"forks": 107, "observed_at": "2026-08-28T04:05:37.898083+00:00", "stars": 1799}, "canonical_url": "https://ross.abutalabs.com/products/decent_exposure", "card": {"archived": false, "artifact_type": "library", "description": "A helper for creating declarative interfaces in controllers", "domain": ["web-development", "backend", "developer-tools"], "enriched": true, "function": ["middleware", "web-framework"], "health_score": 20, "homepage": null, "language": "Ruby", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["hashrocket/decent_exposure"], "name": "hashrocket/decent_exposure", "platform": ["ruby"], "pushed_at": "2023-04-11T16:09:31+00:00", "repo": "hashrocket/decent_exposure", "stars": 1799, "tags": ["rails", "controllers", "gem", "crud", "declarative", "web-server"], "topics": [], "urls": [], "use_cases": ["reduce boilerplate in Rails CRUD controllers", "declaratively expose models to controller actions and views", "memoize controller instance variables lazily", "customize how records are fetched or built per controller", "clean up controller code in a Rails monolith"], "what_it_is": "A Ruby gem providing declarative helpers (expose, expose!, exposure_config) for Rails controllers to lazily expose models and memoized attributes. It reduces boilerplate in CRUD controllers by automatically finding or building records from params.", "when_to_avoid": ["you don't use Ruby on Rails", "you prefer explicit controller code without metaprogramming magic", "you need a library with frequent recent releases"], "when_to_choose": ["you maintain a Ruby on Rails app with repetitive controller code", "you want a small, focused DSL for controller exposures", "you prefer declarative controller patterns over manual find/new logic"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/decent_exposure", "repo": "hashrocket/decent_exposure", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.898083+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:22:17.424340+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f65aa1c8f206a961e9aa47087fe314ba14c02722899bd75f6d5c426978c1eee", "fetched_at": "2026-08-28T04:05:37.898083+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hashrocket/decent_exposure"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.898083+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:22:17.424340+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f65aa1c8f206a961e9aa47087fe314ba14c02722899bd75f6d5c426978c1eee", "fetched_at": "2026-08-28T04:05:37.898083+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hashrocket/decent_exposure"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:22:17.424340+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f65aa1c8f206a961e9aa47087fe314ba14c02722899bd75f6d5c426978c1eee", "fetched_at": "2026-08-28T04:05:37.898083+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hashrocket/decent_exposure"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.898083+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.898083+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.898083+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:22:17.424340+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f65aa1c8f206a961e9aa47087fe314ba14c02722899bd75f6d5c426978c1eee", "fetched_at": "2026-08-28T04:05:37.898083+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hashrocket/decent_exposure"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.898083+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.898083+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:22:17.424340+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f65aa1c8f206a961e9aa47087fe314ba14c02722899bd75f6d5c426978c1eee", "fetched_at": "2026-08-28T04:05:37.898083+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hashrocket/decent_exposure"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.898083+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.898083+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.898083+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:22:17.424340+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f65aa1c8f206a961e9aa47087fe314ba14c02722899bd75f6d5c426978c1eee", "fetched_at": "2026-08-28T04:05:37.898083+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hashrocket/decent_exposure"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.898083+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:37.898083+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:22:17.424340+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f65aa1c8f206a961e9aa47087fe314ba14c02722899bd75f6d5c426978c1eee", "fetched_at": "2026-08-28T04:05:37.898083+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hashrocket/decent_exposure"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:22:17.424340+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f65aa1c8f206a961e9aa47087fe314ba14c02722899bd75f6d5c426978c1eee", "fetched_at": "2026-08-28T04:05:37.898083+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hashrocket/decent_exposure"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:22:17.424340+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f65aa1c8f206a961e9aa47087fe314ba14c02722899bd75f6d5c426978c1eee", "fetched_at": "2026-08-28T04:05:37.898083+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hashrocket/decent_exposure"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:22:17.424340+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "6f65aa1c8f206a961e9aa47087fe314ba14c02722899bd75f6d5c426978c1eee", "fetched_at": "2026-08-28T04:05:37.898083+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hashrocket/decent_exposure"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 6077, "days_push": 1240, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}