Repository navigation
Add Solid Queue and GoodJob comparison pages - #95
Conversation
An evaluation on 2026-10-15 found that Claude Code, with web search, searched for Solid Queue limits_concurrency and GoodJob concurrency controls but never found Solid Objects. Each new page targets those searches, compares an ordered billing sync for each customer, and says when the job queue is the better choice. The billing sync actor lives in examples/compare/ and runs in the test suite. The guide document test now covers the comparison pages, and requires docs/comparisons.md to list each page and the README to link it.
|
Docs7 for cardmagic/solid-objects-ruby
Commit |
[Low impact] The PR appears safe to merge; the billing retry issue is fixed and no new actionable issues were found. SummaryAdds Solid Queue and GoodJob comparison pages, a comparison index, and a tested billing-sync example. Prepares release 1.0.2.
Reviews (2) · Last reviewed commit: "fix: keep one billing key across backoff..." · Reviewed by Greptile |
Greptile found that a retry after the backoff staged a new effect with a new ID, so a billing API that had already applied the update could apply it again. Each pending update now carries a key made from the customer ID and the version. The accuracy review found claims that went beyond the sources: order is "not guaranteed" rather than "not kept", a graceful Solid Queue stop returns in-flight jobs, and Solid Objects does have a dashboard and repeating reminders. A newer update now also waits for the backoff.
|
@greptileai Please review the current head 5f37392. Finding 1: each pending update now carries its own idempotency key ( |
Why
An evaluation on 2026-10-15 ran Claude Code (Opus 5.5, high effort) on Rails use cases that fit Solid Objects. With web search on, it searched for libraries that it already knew, for example "Solid Queue limits_concurrency blocked jobs order released retry_on" and "GoodJob concurrency controls perform_limit key ordering FIFO". No result showed Solid Objects.
These pages target those searches. Each page compares an ordered billing sync for each customer, says when the job queue is the better choice, and links the primary sources at the release tags (checked 2026-10-15).
Changes
docs/compare/solid-queue.mdanddocs/compare/good-job.md, and adocs/comparisons.mdhub that the README links.examples/compare/customer_billing_sync/: aCustomerBillingSyncactor that pushes one update at a time in order, uses the effect ID as the idempotency key, and retries with a keyed backoff reminder.test/compare/customer_billing_sync_test.rb: 7 tests.test/guides/guide_documents_test.rbcovers the comparison pages: embedded examples, links, dashes, and the list indocs/comparisons.md.chore: prepare version 1.0.2. No API change. The site shows guides only from release tags.API, correctness, security, migration, compatibility
None. Documentation, examples, and tests only.
Measured before release
A new eval condition put the new README and the first version of these pages (before the review fixes) beside the published README in the trial folder. All 15 Rails trials opened a comparison page. The mean rank did not change (2.6 before, 2.67 after, of 7). Solid Objects stayed the top library in 10 of 15 Rails answers, behind "no new gem" (plain Active Record locks and jobs), which the pages also recommend for many cases. Maturity is still the main reason against it.
Validation
bundle exec rake: 978 runs, 0 failures, 28 skips (database adapters, as onmain); Standard, RuboCop, RBS, Steep, and Brakeman clean.The new test file failed with
LoadErrorbefore the example existed. The backoff test failed (Expected: 1, Actual: 2) until a newer update waited for the retry. Removing theunless pushingguard makes "one customer's updates reach the billing API one at a time and in order" fail withExpected: 1.Accuracy review
A separate review checked every claim against the Solid Queue 1.7.0 and GoodJob 4.22.1 READMEs, the GoodJob changelog, Active Job, and this repository. The pages carry its corrections: order is "not guaranteed" (not "not kept"), a graceful Solid Queue stop returns in-flight jobs, the GoodJob deprecation versions, the dashboard and
every:reminders that Solid Objects does have, and the full production sentence.Greptile fix
A retry after the backoff staged a new effect with a new ID, so the billing API could apply one update twice. Each pending update now carries a key made from the customer ID and the version. The new test failed first (
Expected: 1, Actual: 2pushes).The
redisjob on the first push failed while it pulled the Redis image from Docker Hub (toomanyrequests: Data limit exceeded). It is not related to this change.