Problem
The repository has no test framework wired up and no CI. This is the root cause that lets bugs like the capital-D require (Linux load failure) and the pool-size-after-build ordering slip through.
Fix
- Pick a framework (RSpec is idiomatic for gems; Minitest is lighter).
- Add a
spec/ or test/ directory with coverage for:
Configuration defaults + ENV overrides.
YamlLoader applies values, tolerates missing file.
HandlerRegistry register / lookup / clear / uniqueness error.
Dispatcher.enqueue builds correct payload, rejects non-workers, pushes to the right key.
Worker DSL: queue_as, job_name, fallback to default queue.
- End-to-end: enqueue → worker loop pops → handler runs (integration test against real Redis).
- Add GitHub Actions CI on
ubuntu-latest with a Redis service container. Run the full suite plus a smoke test that requires the gem (catches case-sensitive filename bugs).
- Add RuboCop with the project's existing style directives.
Acceptance
bundle exec rspec passes locally and in CI.
- CI runs on every PR against
master.
- Linux load regression would fail CI.
Problem
The repository has no test framework wired up and no CI. This is the root cause that lets bugs like the capital-
Drequire(Linux load failure) and the pool-size-after-build ordering slip through.Fix
spec/ortest/directory with coverage for:Configurationdefaults + ENV overrides.YamlLoaderapplies values, tolerates missing file.HandlerRegistryregister / lookup / clear / uniqueness error.Dispatcher.enqueuebuilds correct payload, rejects non-workers, pushes to the right key.WorkerDSL:queue_as,job_name, fallback to default queue.ubuntu-latestwith a Redis service container. Run the full suite plus a smoke test thatrequires the gem (catches case-sensitive filename bugs).Acceptance
bundle exec rspecpasses locally and in CI.master.