{"adoption": {"forks": 291, "observed_at": "2026-08-28T04:05:01.223961+00:00", "stars": 1543}, "canonical_url": "https://ross.abutalabs.com/products/sidekiq-unique-jobs", "card": {"archived": false, "artifact_type": "library", "description": "Prevents duplicate Sidekiq jobs", "domain": ["backend", "developer-tools"], "enriched": true, "function": ["middleware", "caching", "concurrency"], "health_score": 98, "homepage": "https://zoolutions.github.io/sidekiq-unique-jobs/", "language": "Ruby", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["zoolutions/sidekiq-unique-jobs"], "name": "zoolutions/sidekiq-unique-jobs", "platform": ["ruby"], "pushed_at": "2026-08-24T13:24:41+00:00", "repo": "zoolutions/sidekiq-unique-jobs", "stars": 1543, "tags": ["sidekiq", "background-jobs", "job-deduplication", "distributed-locks", "redis-locks", "automation", "redis"], "topics": ["ruby", "sidekiq", "redis"], "urls": [], "use_cases": ["prevent duplicate sidekiq jobs with same arguments", "ensure only one instance of a background job runs at a time", "deduplicate scheduled jobs in rails", "stop concurrent execution of the same worker", "replace existing queued job with a new one", "reschedule duplicate jobs instead of dropping them"], "what_it_is": "A Ruby gem that prevents duplicate Sidekiq background jobs using Redis-based locks. It provides multiple lock types and conflict strategies to control job uniqueness across the enqueue and execution lifecycle.", "when_to_avoid": ["you don't use Sidekiq for background processing", "you use a Sidekiq version older than 8.0 or Ruby older than 3.2", "you need uniqueness across different job systems"], "when_to_choose": ["you use Sidekiq and need job uniqueness guarantees", "you need fine-grained control over lock lifecycles and conflict handling", "you already run Redis alongside Sidekiq"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/sidekiq-unique-jobs", "repo": "zoolutions/sidekiq-unique-jobs", "role": "main", "score": 83}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.223961+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:30:42.648234+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9c9db291e241c5ee7eb565a12e5989c66736d76e511dc2120ccc00f51a5f1c26", "fetched_at": "2026-08-28T04:05:01.223961+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zoolutions/sidekiq-unique-jobs"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.223961+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:30:42.648234+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9c9db291e241c5ee7eb565a12e5989c66736d76e511dc2120ccc00f51a5f1c26", "fetched_at": "2026-08-28T04:05:01.223961+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zoolutions/sidekiq-unique-jobs"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:30:42.648234+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9c9db291e241c5ee7eb565a12e5989c66736d76e511dc2120ccc00f51a5f1c26", "fetched_at": "2026-08-28T04:05:01.223961+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zoolutions/sidekiq-unique-jobs"}], "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:01.223961+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.223961+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.223961+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:30:42.648234+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9c9db291e241c5ee7eb565a12e5989c66736d76e511dc2120ccc00f51a5f1c26", "fetched_at": "2026-08-28T04:05:01.223961+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zoolutions/sidekiq-unique-jobs"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.223961+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.223961+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:30:42.648234+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9c9db291e241c5ee7eb565a12e5989c66736d76e511dc2120ccc00f51a5f1c26", "fetched_at": "2026-08-28T04:05:01.223961+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zoolutions/sidekiq-unique-jobs"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.223961+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.223961+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.223961+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:30:42.648234+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9c9db291e241c5ee7eb565a12e5989c66736d76e511dc2120ccc00f51a5f1c26", "fetched_at": "2026-08-28T04:05:01.223961+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zoolutions/sidekiq-unique-jobs"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.223961+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:01.223961+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:30:42.648234+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9c9db291e241c5ee7eb565a12e5989c66736d76e511dc2120ccc00f51a5f1c26", "fetched_at": "2026-08-28T04:05:01.223961+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zoolutions/sidekiq-unique-jobs"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:30:42.648234+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9c9db291e241c5ee7eb565a12e5989c66736d76e511dc2120ccc00f51a5f1c26", "fetched_at": "2026-08-28T04:05:01.223961+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zoolutions/sidekiq-unique-jobs"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:30:42.648234+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9c9db291e241c5ee7eb565a12e5989c66736d76e511dc2120ccc00f51a5f1c26", "fetched_at": "2026-08-28T04:05:01.223961+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zoolutions/sidekiq-unique-jobs"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:30:42.648234+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9c9db291e241c5ee7eb565a12e5989c66736d76e511dc2120ccc00f51a5f1c26", "fetched_at": "2026-08-28T04:05:01.223961+00:00", "kind": "readme", "missing": false, "url": "https://github.com/zoolutions/sidekiq-unique-jobs"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 53}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5151, "days_push": 9, "days_rel": 159, "gap_med": 105, "n_releases_24m": 4}, "score": 83, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}