Skip to content
CAI
Software that uses CAICheck a score

rails/mission_control-jobs

45.9

Weak · 20 September 2026

2.8k

lines of production code

Ruby

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

Mission Control Jobs is a Ruby gem that provides a web-based interface for monitoring and managing background job processing across various queue adapters like Resque, Solid Queue, and Async. It enables administrators to filter, pause, resume, retry, and discard jobs, as well as view active workers, job batches, and recurring tasks. The system offers a unified API for querying job states and integrates directly into Rails applications to facilitate operational oversight and incident response.

How it got here

2022 — Initial project setup and UI development

39 changes.

This period established the foundational structure for the Mission Control Jobs gem, including core configuration, adapter contracts, and domain models for managing jobs, batches, and workers. It introduced a redesigned user interface powered by Bulma CSS and Hotwired Turbo, enabling comprehensive job monitoring, filtering, and batch operations across Resque and Solid Queue adapters.

2024–2026 — Mission Control feature expansion

10 changes.

This period focused on significantly expanding the Mission Control interface by adding dedicated views and management capabilities for workers, recurring tasks, and batch jobs. It also enhanced the handling of paused, blocked, scheduled, and failed jobs with new actions like immediate dispatch and improved trace visibility. The work was supported by adding Solid Queue adapter support and broadening CI compatibility across multiple Rails versions.

Features

Add IRB commands to connect to job servers and view help

The console now includes new IRB commands (\connect\_to\ and \jobs\_help\) that allow users to connect to specific job servers by locator and view available servers. The \connect\_to\ command updates the current server context, while \jobs\_help\ displays the current connection status and lists all available job servers across applications. A new \Context\ module ensures that code evaluation is properly activated within the context of the connected server.

_lib/mission\control/jobs/console · high confidence

Add Solid Queue support for batches, recurring tasks, and workers

This change extends the Solid Queue adapter to support three new capabilities: batch job tracking (including progress calculation and status filtering), recurring task management (listing, finding, and manual enqueuing of scheduled jobs), and worker process monitoring (listing and finding active worker processes). These additions allow users to view and manage batch progress, schedule and trigger recurring jobs, and inspect running worker processes directly through the Mission Control interface when using Solid Queue.

_lib/active\_job/queue\_adapters/solid\_queue\ext · high confidence

Add adapter support for Mission Control jobs in Async, Resque, and Solid Queue

New adapter extension files (async\_ext.rb, resque\_ext.rb, solid\_queue\_ext.rb) implement the Mission Control Jobs adapter interface for the Async, Resque, and Solid Queue backends. This enables the Mission Control UI to query, filter, and manage jobs (including retry, discard, pause/resume queues, and view status) for these specific adapters, with Solid Queue receiving native support for multiple job statuses and filters while Resque and Async receive stubbed or basic implementations.

_lib/active\_job/queue\adapters · high confidence

Add recurring tasks management interface

The Mission Control jobs section now includes a dedicated interface for managing recurring tasks. Users can view a list of all configured recurring tasks, seeing details such as the job class or command, schedule, queue, priority, last enqueued time, and next run time. From the index or detail view, users can trigger a task to run immediately via a 'Run now' button. The detail view also displays general information about the task and a paginated list of its associated job executions.

_app/views/mission\_control/jobs/recurring\tasks · high confidence

Add workers view to Mission Control

Mission Control now includes a dedicated section for monitoring background workers. Users can view a list of active workers showing their ID, hostname, current jobs (with truncated arguments), and last heartbeat time. Clicking into a specific worker reveals its configuration, raw data, and the list of jobs it is currently processing or indicates if it is idle.

_app/views/mission\control/jobs/workers · high confidence

Direct job dispatch from the blocked jobs list

Users can now immediately run blocked jobs directly from the Mission Control interface. A new 'Run now' button has been added to the blocked jobs view, allowing for instant dispatch without needing to modify job settings or wait for the scheduled time. The view also displays the specific reason a job is blocked and its expiration time to provide context before execution.

_app/views/mission\control/jobs/jobs/blocked · high confidence

Initial project setup and documentation

This change establishes the foundational structure for the Mission Control Jobs gem. It adds configuration files for the Ruby environment (3.3.1) and Rubocop linting, updates the license to 37signals, and refines the .gitignore rules. It also introduces a Docker Compose configuration for local Redis development and provides comprehensive documentation in the README, covering installation, basic and advanced configuration options (including authentication and multi-adapter support), and adapter-specific details for Resque and Solid Queue.

(repo-wide) · high confidence

Initial release of Mission Control Jobs with configuration and autoloading

This change introduces the core structure for the Mission Control Jobs gem, replacing the previous placeholder with a fully initialized module. It sets up Zeitwerk for autoloading while explicitly ignoring legacy tasks and generators. The module now exposes extensive configuration options via class attributes, including settings for job adapters, applications, base controller class, internal query limits, batch operation delays, scheduled job thresholds, logging, console help display, backtrace cleaning, and navigation paths. It also integrates Importmap for asset management and adds support for HTTP Basic authentication (enabled by default) and customizable job argument filtering.

_lib/mission\control · high confidence

Introduce dedicated queues management interface

Adds a new UI section for managing job queues, featuring an index page that lists all queues with their pending job counts and a detail view that displays individual jobs within a selected queue. Users can now pause and resume queues directly from the interface (where supported by the adapter), view truncated job arguments, and see relative timestamps for when jobs were enqueued. The interface includes pagination for job lists and handles empty states with specific notices.

_app/views/mission\control/jobs/queues · high confidence

Introduces ActiveJob job management and querying API

Adds a new set of classes and modules to ActiveJob that provide a unified API for querying, filtering, and managing jobs across different queue adapters. This includes \ActiveJob::JobsRelation\ for paginated and filtered job lookups (by status, class, queue, and time ranges), \ActiveJob::Queue\ and \ActiveJob::Queues\ for queue-level operations like pausing, resuming, and clearing, and execution helpers like \retry\, \discard\, and \dispatch\ on job instances. It also introduces \ActiveJob::JobProxy\ to manage jobs without loading their classes, enabling operations on jobs even when the job class is not present in the current codebase.

_lib/active\job · high confidence

Introduces models for job batches, recurring tasks, workers, and pagination

This change adds new domain models to the Mission Control jobs interface, enabling users to view and manage job batches (with status and progress tracking), recurring tasks (with scheduling and enqueueing capabilities), and active workers. It also introduces a dedicated Page model to handle pagination logic for job lists, improving performance by caching expensive count queries. These models provide the backend structure for displaying batch details, recurring task schedules, and worker activity in the UI.

_app/models/mission\control · high confidence

New helper modules for job status UI, navigation, and argument rendering

The Mission Control Jobs engine now includes dedicated helper modules to improve the user interface for job monitoring. The new InterfaceHelper provides visual cues for job statuses (e.g., colors for failed, blocked, or scheduled jobs) and blank-state notices. The JobsHelper enhances the display of job arguments by safely rendering hashes, arrays, and serialized objects, while also handling backtrace cleaning for failed jobs. The NavigationHelper updates the sidebar to dynamically list job statuses, workers, batches, and recurring tasks based on adapter support, and includes logic for counting jobs with human-readable formatting. The DatesHelper standardizes time display using relative words with precise titles. These helpers are explicitly included in the ApplicationHelper to ensure they are available across the engine's views.

app/helpers · high confidence

Removals

Removed unused Mission Control Jobs mailer

The ApplicationMailer class for the Mission Control Jobs module has been removed from the application. This eliminates an unused mailer component that previously inherited from ActionMailer::Base with a default sender and layout, simplifying the mailer structure by deleting the file entirely.

app/mailers · high confidence

Behavioural changes

Add application and server selection navigation in Mission Control Jobs

Users can now switch between different applications and servers directly from the Mission Control Jobs interface. This change introduces two new partials: \_applications.html.erb, which provides a dropdown menu to select the current application, and \_servers.html.erb, which displays a tabbed selector for switching between servers within the chosen application. These components enable navigation to the appropriate job queues for the selected application and server combination.

_app/views/layouts/mission\_control/jobs/application\selection · high confidence

Adopts Hotwired (Turbo and Stimulus) for JavaScript architecture

The JavaScript stack in the Mission Control Jobs area has been updated to use Hotwired components, specifically importing Turbo and Stimulus via importmaps. This introduces a new controller-based architecture where Stimulus manages interactive elements (such as form submission via a dedicated controller) and Turbo handles page navigation, replacing previous custom debouncing logic with these standard Hotwired patterns.

app/javascript · high confidence

Enhanced failed job management with backtrace cleaning and filter preservation

The failed jobs screen now includes a toggle to switch between clean and full backtraces, allowing users to view simplified error details or the complete stack trace. Additionally, the Retry and Discard action buttons now preserve the current list filters (such as search terms or status selections) when redirecting, ensuring users remain on the filtered view after performing an action. The interface also displays the time since failure using exact numeric values rather than relative words.

_app/views/mission\control/jobs/jobs/failed · high confidence

Expose batch, worker, recurring task, and serialization capabilities in the server module

The server module now includes dedicated modules to expose batch management, worker information, and recurring task details, allowing users to view and interact with these job-related entities directly through the server interface. Additionally, serialization logic for server identification has been moved into a dedicated module, enabling proper global ID handling for server resources.

_lib/mission\control/jobs/server · high confidence

Include JavaScript assets in the asset manifest

The asset manifest for Mission Control Jobs now explicitly links the JavaScript directories for the application and its controllers, ensuring these scripts are properly included in the compiled asset pipeline.

app/assets/config · high confidence

Migrate Mission Control Jobs stylesheets to Propshaft and vendor Bulma

The Mission Control Jobs engine now serves its stylesheets individually via Propshaft rather than relying on Sprockets' require\_tree directive, ensuring styles load correctly regardless of the host application's asset pipeline. This change includes vendoring the Bulma CSS framework (v1.0.2) directly into the application to avoid Content Security Policy violations and external dependencies, while also introducing dedicated stylesheets for job tables, forms, and application-wide layout to improve UI consistency and responsiveness.

app/assets/stylesheets · high confidence

Mission Control for Jobs v1.3.1: New adapter contract, domain models, and engine wiring

Mission Control for Jobs has been updated to version 1.3.1, introducing a formal adapter contract (\lib/mission\_control/jobs/adapter.rb\) that defines the interface for queue backends to support features like job filtering, batch management, recurring tasks, and worker exposure. The release adds core domain models for managing applications and servers (\Application\, \Server\, \Applications\), along with relation classes for paginating batches and workers. Engine initialization is now more robust, automatically wiring up host route helpers, HTTP Basic Authentication via Rails credentials, and specific adapter extensions for Resque (thread-safe Redis), Solid Queue, and Async. Additionally, the IRB console is enhanced with custom commands (\connect\_to\, \jobs\_help\) to help developers connect to job servers during incidents.

_lib/mission\control/jobs · high confidence

Mission Control jobs UI now enforces English locale and supports batch operations

The Mission Control jobs interface now forces all internal rendering and I18n lookups to use the English locale, ensuring consistent UI text regardless of the user's browser settings. Additionally, the controller layer has been expanded to support new operational capabilities: administrators can now view and manage job batches (with status filtering for finished, unfinished, and failed), perform bulk retry or discard actions on failed jobs, dispatch blocked jobs directly from the UI, and manage recurring tasks (including immediate enqueuing). Worker visibility is also exposed where the adapter supports it, and the UI handles navigation through applications and servers more robustly.

_app/controllers/mission\control/jobs · high confidence

Mission Control jobs controller refactoring and new filtering capabilities

The Mission Control jobs controllers have been restructured into a set of new concerns to support broader job status handling and improved navigation. A new \JobFilters\ concern introduces date range filtering for \finished\_at\, \scheduled\_at\, and \enqueued\_at\, alongside consistent filtering by job class name and queue name. \AdapterFeatures\ exposes adapter-specific capabilities such as queue pausing, worker visibility, recurring tasks, and batch support, allowing the UI to adapt to the underlying queue adapter. \ApplicationScoped\ and \QueueScoped\ concerns standardize navigation through applications and servers, while \NotFoundRedirections\ provides intelligent fallback redirects when specific jobs, queues, or batches are not found. Basic HTTP authentication is now enforced by default when configured, and bulk operations for failed jobs are limited to 3,000 items to prevent backend overload.

_app/controllers/concerns/mission\control · high confidence

New actions and status indicators for scheduled jobs

The scheduled jobs view now includes a 'Run now' button to execute jobs immediately and a 'Discard' button to delete them, with a confirmation dialog for discarding. Additionally, the job list displays the number of retries for each job and highlights jobs that are delayed relative to their scheduled time.

_app/views/mission\control/jobs/jobs/scheduled · high confidence

New error classes for Active Job operations

The Active Job error handling now includes specific exception classes: \InvalidOperation\, \QueryError\, and \JobNotFoundError\. The \JobNotFoundError\ provides detailed context by storing the job relation and displaying the specific job ID in its error message, improving debugging when a job cannot be located.

_lib/active\job/errors · high confidence

RESTful pause and resume actions for job queues

Mission Control now provides dedicated controllers to pause and resume job queues via standard RESTful actions. Users can trigger these state changes through the new pauses controller, which handles creating a pause or destroying a resume action, redirecting back to the application queues list upon completion.

_app/controllers/mission\control/jobs/queues · high confidence

Rails boot process now loads only selected frameworks

The application's boot sequence has been modified to no longer load the full Rails stack by default. Instead, the bin/rails script now explicitly requires only specific components such as Active Model, Active Job, Active Record, Action Controller, Action View, Action Cable, and the test unit railtie. This change allows for a lighter runtime footprint by excluding unused frameworks like Active Storage and Action Mailer, which remain commented out for optional inclusion.

bin · high confidence

Redesigned Mission Control layout with Bulma CSS and Turbo integration

The Mission Control jobs interface now uses the Bulma CSS framework for styling, replacing the previous stylesheet with specific Bulma and application assets. The layout has been restructured to include a responsive navigation bar that allows switching between applications and servers, a dedicated flash message area for user notifications, and a tabbed navigation menu. Additionally, Turbo is fully integrated with prefetching disabled and caching turned off to ensure real-time updates, and the page title is now dynamic based on the current context.

_app/views/layouts/mission\control/jobs · high confidence

Refactor job list UI into shared partials with argument truncation

The job list interface in Mission Control has been refactored to use shared partials (\_job, \_jobs, \_pagination\_toolbar), standardizing the display of job details, status, and pagination controls. A key user-facing change is that job arguments in the list view are now truncated to 300 characters, preventing excessively long data from cluttering the table while still allowing access to full details via the job link.

_app/views/mission\control/jobs/shared · high confidence

Revamped job and batch monitoring views in Mission Control

The Mission Control interface for monitoring jobs and batches has been completely redesigned. The jobs listing now supports filtering by job class, queue, and specific date ranges (enqueued, finished, or scheduled), with filters triggering on change rather than input. Individual job pages display comprehensive details including arguments, retry counts, duration, worker assignment, and batch membership, while also exposing retry, discard, and dispatch actions for blocked jobs. A new batch monitoring section has been added, featuring a list view with progress tracking and a detail view showing job counts by status, metadata, and associated jobs. Error information for failed jobs is now rendered outside of table cells for better readability, and time displays have been standardized to relative, in-words formats.

_app/views/mission\control/jobs/jobs · high confidence

Revamped routing structure and added Turbo/Stimulus support for job management

The application's routing has been restructured to support a hierarchical navigation model (Applications \> Queues \> Jobs) alongside direct access to queues and jobs, enabling new capabilities such as pausing/resuming queues, retrying/discharding individual or bulk jobs, dispatching blocked jobs, and viewing workers, recurring tasks, and batches. To support this enhanced interactive UI, Importmap configuration has been added to include Hotwired Turbo and Stimulus libraries, facilitating smoother client-side interactions for these new features.

config · high confidence

Thread-safe Redis configuration in Resque

Resque now supports thread-safe configuration of the Redis connection. A new \Resque::ThreadSafeRedis\ module allows applications to temporarily override the Redis instance for specific code blocks without affecting the global state or breaking the main adapter, ensuring that concurrent jobs can safely use different Redis servers.

lib/resque · high confidence

Test coverage

Added adapter tests for job lifecycle and management operations; Added controller integration tests for Mission Control Jobs; Added system tests for job management and queue operations; Added test coverage for Mission Control for Jobs core components; Added test job definitions and invocation tracking for job testing; Added test suite for Active Job queue adapters; Added test support helpers for job queues, UI interactions, and Resque integration; Added test to prevent inline styles in ERB templates; Added tests for Active Job proxy, relation, and queue collection classes; Added tests for job argument rendering and navigation helper configuration; Established test infrastructure for system and integration testing; Removal of placeholder test files; Removed unused ApplicationMailer test dummy file; Test dummy app configured for multi-adapter Solid Queue and Resque testing.

Dependencies

Add CI gemfiles for Rails 7.1, 7.2, 8.0, and 8.1

New CI gemfiles have been added to support testing against Rails versions 7.1, 7.2, 8.0, and 8.1. The Rails 7.1 gemfile pins \resque\ to versions below 3 and \minitest\ to versions below 6 to avoid compatibility issues with newer major releases that require features from Rails 7.2 and 8.0 respectively. The Rails 7.2 gemfile also pins \minitest\ below version 6, while the Rails 8.0 and 8.1 gemfiles do not include these specific version constraints.

gemfiles · high confidence

Mission Control Jobs 1.3.1 dependency update and gemspec cleanup

This change updates the gemspec to declare specific Rails framework dependencies (ActiveRecord, ActiveJob, ActionPack, ActionCable, Railties) requiring version 7.1 or higher, replacing the previous broad 'rails' dependency. It also adds development dependencies for testing and linting, including solid\_queue, resque, redis, and rubocop variants. The Gemfile is updated to use a specific GitHub revision of Capybara, and the Gemfile.lock reflects the resolved dependency tree for mission\_control-jobs 1.3.1.

(dependencies) · high confidence

Housekeeping

Removal of empty concerns directory placeholder; Removed empty concerns placeholder file.

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 46.

Lenses

  • Code Health 48
  • Architecture 89
  • Maturity 59
  • Readiness 35
  • Security 86
  • Domain Modelling 100
  • Accessibility 48

Changes since last survey

  • 300 commits — 276 feature/other, 24 fixes

By area

  • (root) — 78 commits
  • app/views — 47 commits
  • lib/mission_control — 27 commits
  • app/controllers — 26 commits
  • lib/active_job — 26 commits
  • (repo) — 24 commits
  • test/active_job — 13 commits
  • .github/workflows — 11 commits
  • app/helpers — 11 commits
  • test/dummy — 7 commits
  • app/assets — 6 commits
  • test/system — 6 commits
  • test/controllers — 5 commits
  • app/models — 4 commits
  • test/application_system_test_case.rb — 2 commits
  • app/javascript — 1 commit
  • app/mailers — 1 commit
  • bin/setup — 1 commit
  • docs/images — 1 commit
  • test/mission_control — 1 commit

Notable commits

  • fix: Fix #duration when #scheduled_at is not set
  • fix: Fix GitHub workflow file and add forgotten job for test
  • fix: Fix blocked jobs rendering the "Expires" tooltip markup as text
  • fix: Fix config.active_job.default_page_size not being applied
  • fix: Fix datetime shift in job filter for non-UTC timezones (#278)
  • fix: Fix finished_at filters and add a couple of tests
  • fix: Fix layout style issue
  • fix: Fix propshaft CSS importing
  • fix: Fix setting basic auth config by hand
  • fix: Fix total page calculation when page_size is not the default
  • fix: Fix trailing whitespaces
  • fix: Fix workers pagination issue where the whole relation was being loaded
  • fix: Fix: Extra Options in Dropdown for Job Class and Queue Name Filters
  • fix: Fixed a Rubocop violation that I missed
  • fix: Fixed seeds
  • fix: Fixes initializing the Rails.backtrace_cleaner in the Gem Vs. App
  • fix: Revert "Merge pull request #138 from dorianmariecom/dorian/rails-8"
  • fix: Revert "Merge pull request #87 from zavan/api-only"
  • fix: Update bulma.min.css to fix an annoying css compile error
  • fix: Update resque and mono_logger for Ruby 3.3.0 fix
  • …and 280 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

rails/mission_control-jobs was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit ee06c67c57e61631aa880da8ad66e80ffbcf769a — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.