{"adoption": {"forks": 109, "observed_at": "2026-08-28T04:03:41.995397+00:00", "stars": 1128}, "canonical_url": "https://ross.abutalabs.com/products/active_decorator", "card": {"archived": false, "artifact_type": "library", "description": "ORM agnostic truly Object-Oriented view helper for Rails 4, 5, 6, 7, and 8", "domain": ["web-development", "backend", "developer-tools"], "enriched": true, "function": ["templating", "middleware"], "health_score": 73, "homepage": null, "language": "Ruby", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["amatsuda/active_decorator"], "name": "amatsuda/active_decorator", "platform": ["ruby"], "pushed_at": "2026-06-19T00:22:13+00:00", "repo": "amatsuda/active_decorator", "stars": 1128, "tags": ["rails", "decorators", "view-helpers", "orm-agnostic", "presenters", "web-server"], "topics": ["ruby", "rails", "decorators"], "urls": [], "use_cases": ["decorate Rails models for view rendering", "keep view logic object-oriented instead of procedural helpers", "format model attributes in views without cluttering helpers", "auto-decorate model collections and associations in partials", "call ActionView helpers like link_to from decorator modules"], "what_it_is": "ActiveDecorator is a Ruby gem that provides ORM-agnostic, object-oriented view helpers for Rails applications. It automatically mixes decorator modules into model objects only within the view context, keeping views and helpers clean and object-oriented.", "when_to_avoid": ["you use Sinatra, Hanami, or non-Rails frameworks", "you need standalone presenter objects usable outside the view context", "you prefer explicit decoration like Draper's `decorates` style"], "when_to_choose": ["you use Rails 4 through 8 and want lightweight, implicit decorators", "you prefer decorator modules over presenter objects with explicit wrapping", "you want decorators that can call ActionView helper methods directly", "you use ActiveRecord, ActiveResource, or any plain Ruby object ORM"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/active_decorator", "repo": "amatsuda/active_decorator", "role": "main", "score": 72}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:41.995397+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:38:31.818063+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "12397e0d9c302ef820b7d70e81c2c8d113786ed8409f0ed3103a7cf1cd9f2fc1", "fetched_at": "2026-08-28T04:03:41.995397+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amatsuda/active_decorator"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:41.995397+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:38:31.818063+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "12397e0d9c302ef820b7d70e81c2c8d113786ed8409f0ed3103a7cf1cd9f2fc1", "fetched_at": "2026-08-28T04:03:41.995397+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amatsuda/active_decorator"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:38:31.818063+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "12397e0d9c302ef820b7d70e81c2c8d113786ed8409f0ed3103a7cf1cd9f2fc1", "fetched_at": "2026-08-28T04:03:41.995397+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amatsuda/active_decorator"}], "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:03:41.995397+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:41.995397+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:41.995397+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:38:31.818063+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "12397e0d9c302ef820b7d70e81c2c8d113786ed8409f0ed3103a7cf1cd9f2fc1", "fetched_at": "2026-08-28T04:03:41.995397+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amatsuda/active_decorator"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:41.995397+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:41.995397+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:38:31.818063+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "12397e0d9c302ef820b7d70e81c2c8d113786ed8409f0ed3103a7cf1cd9f2fc1", "fetched_at": "2026-08-28T04:03:41.995397+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amatsuda/active_decorator"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:41.995397+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:41.995397+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:41.995397+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:38:31.818063+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "12397e0d9c302ef820b7d70e81c2c8d113786ed8409f0ed3103a7cf1cd9f2fc1", "fetched_at": "2026-08-28T04:03:41.995397+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amatsuda/active_decorator"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:41.995397+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:41.995397+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:38:31.818063+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "12397e0d9c302ef820b7d70e81c2c8d113786ed8409f0ed3103a7cf1cd9f2fc1", "fetched_at": "2026-08-28T04:03:41.995397+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amatsuda/active_decorator"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:38:31.818063+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "12397e0d9c302ef820b7d70e81c2c8d113786ed8409f0ed3103a7cf1cd9f2fc1", "fetched_at": "2026-08-28T04:03:41.995397+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amatsuda/active_decorator"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:38:31.818063+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "12397e0d9c302ef820b7d70e81c2c8d113786ed8409f0ed3103a7cf1cd9f2fc1", "fetched_at": "2026-08-28T04:03:41.995397+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amatsuda/active_decorator"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:38:31.818063+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "12397e0d9c302ef820b7d70e81c2c8d113786ed8409f0ed3103a7cf1cd9f2fc1", "fetched_at": "2026-08-28T04:03:41.995397+00:00", "kind": "readme", "missing": false, "url": "https://github.com/amatsuda/active_decorator"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 88, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5388, "days_push": 76, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 72, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}