0.0
The project is in a healthy, maintained state
Mount SolidStackWeb in any Rails app using the Solid Stack to get a single dashboard covering Solid Queue job monitoring, Solid Cache statistics, and Solid Cable connection observability — all without leaving your app.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Runtime

>= 43.0
>= 8.1.3
>= 3.0
 Project Readme

SolidStackWeb

CI Gem Version Ruby codecov

A mountable Rails engine that provides a unified web dashboard for the full Solid StackSolid Queue, Solid Cache, and Solid Cable — in a single interface with no asset pipeline dependency and no JavaScript runtime requirement.

Features

  • Overview dashboard with live counts across all three Solid Stack components; cards are clickable and link directly to each section
  • Solid Queue — browse jobs by status (ready, scheduled, claimed, blocked) with filtering by job class, queue name, priority, and time period; manage failed jobs (retry / discard / bulk retry / bulk discard), pause/resume queues, and inspect worker processes; Bulk selection checkbox-selects individual jobs for discard or retry; Discard All bulk-discards every job matching the current filters in one request; CSV export downloads jobs or failed jobs as a CSV file respecting active filters; Per-queue browser — click any queue name or size to drill into its ready jobs with per-row and bulk discard
  • Performance statistics pageGET /stats aggregates finished jobs by class name with execution count, avg, p50, p95, min, and max duration; click any column header to sort; defaults to p95 descending
  • Job history view — paginated list of all finished jobs with class name, queue, duration, and finished-at time; filterable by queue (click a badge), class substring, and time period; CSV export respects active filters
  • Scheduled job management — "Run Now" and offset buttons (+1h / +24h / +7d) per row update the scheduled time inline via Turbo Stream; "Run All Now (N)" in the header back-dates all matching executions at once
  • Recurring task list — enumerates all SolidQueue::RecurringTask records with cron schedule, job class or command, queue, next-run and last-run times, and a static/dynamic badge; each row has a "Run Now" button that immediately enqueues the task
  • Job detail page — drill into any job to see full arguments (pretty-printed JSON), queue, priority, enqueued time, Active Job ID, concurrency key, scheduled/blocked-until metadata, and a Discard button
  • Failed job detail page — drill into any failed job to see the full error, backtrace, and an inline JSON argument editor; submit to update arguments and retry in one action
  • Solid Cache — entry count and total byte size at a glance
  • Solid Cable — active message count and distinct channel count
  • Turbo Stream job discard — removes the row inline without a full page reload
  • Authentication hook — plug in your own auth logic (Devise, Basic Auth, custom) via a one-line initializer
  • Zero asset pipeline coupling — CSS is injected inline; safe to mount in any host app

Installation

Add the gem to your application's Gemfile:

gem "solid_stack_web"

Run:

bundle install

Mount the engine in config/routes.rb:

mount SolidStackWeb::Engine, at: "/solid_stack"

The dashboard will be available at /solid_stack (or whatever path you choose).

Configuration

Create an initializer at config/initializers/solid_stack_web.rb:

SolidStackWeb.configure do |config|
  # Number of items per paginated page (default: 25)
  config.page_size = 50

  # Authentication — block runs in controller context.
  # Return a truthy value to allow access; falsy falls back to HTTP Basic.
  config.authenticate do
    current_user&.admin?
  end
end

Job Filtering

The jobs list supports four independent filters, all driven by query params:

Param Description
q Substring match against the job class name (e.g. q=Report)
queue Exact queue name match; select appears only when multiple queues exist
priority Exact priority value match; select appears only when multiple priorities exist
period Enqueued-at window — 1h, 24h, 7d, or omit for all time

Filters are preserved when switching between status tabs (Ready / Scheduled / Running / Blocked) and when discarding a job. They can be combined freely.

Authentication

The authenticate block is evaluated in the context of each request's controller instance, so any helper method available to controllers (e.g. current_user from Devise) works directly. If the block returns false or nil, the engine falls back to HTTP Basic authentication. If no authenticate block is configured, the dashboard is open.

Requirements

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feat/my-feature)
  3. Run the test suite: bundle exec rake
  4. Open a pull request

Bug reports and feature requests are welcome on GitHub Issues.

License

The gem is available as open source under the terms of the MIT License.