solid-queue-and-sidekiq

Configure ActiveJob backends and idempotent retry patterns for Rails background jobs.

21|2|Updated May 24, 2026
One-click install
npx skills add https://github.com/sandeepmvl/rails-skills --skill solid-queue-and-sidekiq
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: solid-queue-and-sidekiq
Source: https://github.com/sandeepmvl/rails-skills/tree/main/skills/07-solid-queue-and-sidekiq
Command: npx skills add https://github.com/sandeepmvl/rails-skills --skill solid-queue-and-sidekiq

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

AI coding agents consistently make critical, costly mistakes when implementing Ruby on Rails background jobs: they select the wrong backend (Solid Queue vs Sidekiq) for the project's needs, skip idempotency design leading to duplicate charges or side effects on retry, enqueue jobs before database transactions commit causing ActiveRecord::RecordNotFound errors, and overuse async processing for trivial work that adds unnecessary overhead and latency.

Core Features & Use Cases

  • Backend selection decision matrix: Clear, opinionated guidance to choose between Solid Queue (Rails 8 default, no Redis required) and Sidekiq (for existing Redis infrastructure or advanced Pro/Enterprise features like rate limiting and batch processing).
  • Idempotent job design patterns: Proven strategies to build jobs that safely retry without duplicate side effects, including state checks, external idempotency keys, and database unique constraints.
  • Production-grade best practices: End-to-end guidance on retry/backoff configuration, scheduled job setup, queue separation, concurrency controls, dead job handling, and testing patterns for ActiveJob, Sidekiq, and Solid Queue aligned with senior Rails developer conventions.
  • Use case example: A Rails 8 SaaS developer can use this skill to correctly set up Solid Queue for recurring daily digest emails, ensure payment processing jobs never double-charge customers on network retries, and separate latency-sensitive mailer queues from heavy report queues to prevent processing bottlenecks.

Quick Start

Use the solid-queue-and-sidekiq skill to design an idempotent payment processing job that retries safely on Stripe API failures and enqueues only after the order transaction commits.

Frequently Asked Questions about solid-queue-and-sidekiq

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I choose between Solid Queue and Sidekiq for Rails background jobs?

Choose Solid Queue for Rails 8 defaults without Redis, or Sidekiq when leveraging existing Redis infrastructure and advanced Pro/Enterprise features like rate limiting and batch processing.

Why do my ActiveJob background jobs fail with ActiveRecord::RecordNotFound on retry?

ActiveJob background jobs fail with ActiveRecord::RecordNotFound when enqueued before database transactions commit, requiring after_commit enqueueing patterns to ensure record availability.

How do I make Sidekiq and ActiveJob idempotent to prevent duplicate charges?

Make Sidekiq and ActiveJob idempotent by implementing state checks, external idempotency keys, and database unique constraints to prevent duplicate side effects during network retries.

What is the best way to configure exponential backoff retries in Rails ActiveJob?

Configure exponential backoff retries in Rails ActiveJob by setting production-grade retry and backoff configurations aligned with senior Rails developer conventions for safe dead job handling.

When should I use async perform_later instead of sync processing in Rails?

Use async perform_later for latency-sensitive or heavy workloads like report generation, but avoid overusing async processing for trivial work that adds unnecessary overhead and latency.

How do I set up Solid Queue for recurring daily digest emails in Rails 8?

Set up Solid Queue for recurring daily digest emails in Rails 8 by configuring scheduled jobs, separating latency-sensitive mailer queues from heavy report queues, and applying concurrency controls.