Rocket Job Mission Control
Rocket Job Mission Control is the web based user interface for Rocket Job, Ruby's missing batch system.
It is a mountable Rails Engine that plugs directly into an existing Rails application, giving operators a single place to:
- Manage jobs. Watch queued, scheduled, running, paused, completed, failed, and aborted jobs in real time, then pause, resume, retry, abort, run, or destroy them, and inspect the exceptions and data of any job.
- Manage servers and workers. See which servers and workers are active, what each worker is currently processing, and stop, pause, or resume servers.
- Manage directory monitoring. Create, edit, enable, disable, copy, and replicate Directory Monitor entries that turn arriving files into jobs.
Already in use in production processing large files with millions of records, as well as large jobs that walk through entire databases.
Documentation
Install
Rocket Job Mission Control is a Rails Engine. It can be mounted into any existing Rails 7.2, 8.0, or 8.1 application backed by MongoDB (via Mongoid).
Add to the host application's Gemfile:
gem 'rocketjob_mission_control'Install:
bundle installMount the engine by adding the following route to config/routes.rb:
mount RocketJobMissionControl::Engine => '/rocketjob'Mission Control is now available at /rocketjob.
Authorization
By default Mission Control grants full access to every action. To restrict access, register an
authorization callback that returns the roles (and optional login) for the current request:
Rails.application.config.rocket_job_mission_control.authorization_callback = -> do
{ roles: current_user.rocket_job_roles, login: current_user.login }
endAvailable roles are admin, editor, operator, manager, dirmon, user, and view. Roles
are hierarchical, so granting a higher-privilege role also grants the lower ones.
Development and Testing
See TESTING.md for how to set up the project, run the test suite across supported Rails versions, and run Mission Control standalone against the bundled dummy application.
Versioning
This project uses Semantic Versioning.