solid_web_ui

Gem Version Downloads CI License: MIT

Web dashboards for Rails' Solid Queue, Solid Cache and Solid Cable — one gem (solid_web_ui) with three independently mountable Rails engines sharing one design system.

The repository is named solid-web; the gem it ships is solid_web_ui.

Engine Mount What it does
SolidWebUi::Queue::Engine /admin/queue Solid Queue: dashboard, queues (pause/resume), jobs by status, failed jobs (retry/discard), processes, recurring tasks.
SolidWebUi::Cache::Engine /admin/cache Solid Cache: entry/size statistics, entry browser, clear.
SolidWebUi::Cable::Engine /admin/cable Solid Cable: message/channel activity, volume, retention trim.

The shared core (SolidWebUi) provides the layout, ViewComponents, design-token theming and a dry-configurable base. The engines are plain Rails mountable engines — no ActiveAdmin required; host authentication is inherited through a configurable base_controller_class.

Install

# Gemfile
gem "solid_web_ui"
# config/routes.rb — mount only the parts you want
mount SolidWebUi::Queue::Engine => "/admin/queue"
mount SolidWebUi::Cache::Engine => "/admin/cache"
mount SolidWebUi::Cable::Engine => "/admin/cable"
# config/initializers/solid_web_ui.rb — protect the dashboards behind your auth
SolidWebUi::Queue.config.base_controller_class = "Admin::BaseController"
SolidWebUi::Cache.config.base_controller_class = "Admin::BaseController"
SolidWebUi::Cable.config.base_controller_class = "Admin::BaseController"

Development

A single dummy Rails app under spec/dummy (SQLite, schema loaded from the Solid* gems) exercises all three engines.

bundle install
bundle exec rspec               # full suite
bundle exec rake assets:build   # rebuild the precompiled Tailwind stylesheet

Requires the Ruby pinned for this workspace. In a non-interactive shell use mise: mise exec -- bundle exec rspec.

Releasing

Pushing a version tag builds and releases the gem via .github/workflows/release.yml:

git tag v0.1.0
git push origin v0.1.0

The workflow builds solid_web_ui.gem, attaches it to a GitHub Release, and publishes it to RubyGems via OIDC Trusted Publishing (no API key / secret — MFA-compatible).

One-time setup on rubygems.org: register a trusted publisher for solid_web_ui (repo doromones/solid-web, workflow release.yml). Before the first release use a pending trusted publisher (https://rubygems.org/profile/oidc/pending_trusted_publishers/new).

Documentation