WA-FORWARD-004: Move Ruby 3.4 stdlib gem deps from Gemfile to gemspec#782
WA-FORWARD-004: Move Ruby 3.4 stdlib gem deps from Gemfile to gemspec#782kitcommerce merged 1 commit intonextfrom
Conversation
Adds mutex_m, csv, drb, logger, and ostruct as explicit add_dependency entries in core/workarea-core.gemspec. These were extracted from Ruby's default/bundled stdlib in Ruby 3.4; without this, downstream implementations that consume workarea-core as a gem (not path-referenced) would silently fail to load on Ruby 3.4 unless they add these manually to their own Gemfiles. Declaring them in the gemspec ensures the deps propagate automatically to all consumers. Note: The root Gemfile on this branch has no changes — those 5 gems were never committed to next directly. PR #778 (Ruby 3.4 compat check) added them to its own branch's Gemfile as a workaround; once #778 merges, those entries should be removed in favour of this gemspec-level declaration.
Architecture ReviewVerdict: PASS AssessmentThis change correctly moves Ruby 3.4 stdlib gem dependencies from a Gemfile-level workaround to proper Why this matters: When Findings
RecommendationsNone. This is a clean, minimal change that follows Ruby gem packaging conventions correctly. |
Simplicity ReviewVerdict: PASS Findings
Recommendations
|
Security ReviewVerdict: PASS FindingsNo security issues identified. This PR contains only dependency metadata changes:
Notes
Recommendation✅ Safe to merge from a security perspective. |
Rails Conventions Review\n\nVerdict: PASS\n\nCorrect Rails engine pattern: declare Ruby 3.4+ stdlib-extracted gems as runtime deps in so downstream apps inherit them. Notes only (non-blocking): consider future audit of existing usage; suggests legacy usage.\n |
Rails Conventions ReviewVerdict: PASS Correct Rails engine pattern: declare Ruby 3.4+ stdlib-extracted gems as runtime deps in Notes only (non-blocking): consider a future audit of existing |
Test Quality Review\n\nVerdict: PASS\n\nThis PR is dependency packaging only: it moves Ruby 3.4 stdlib-extracted gems (csv/drb/logger/mutex_m/ostruct) into the gemspec and updates . No application code or tests are modified.\n\nNotes (informational):\n- CI is green across the full matrix, including Ruby 3.4 bundle check.\n- No new test coverage is needed for this change.\n |
Test Quality Review (follow-up)Verdict: PASS This PR is dependency packaging only: it moves Ruby 3.4 stdlib-extracted gems (csv/drb/logger/mutex_m/ostruct) into the workarea-core gemspec and updates Gemfile.lock. No application code or tests are modified. Notes (informational):
|
Wave 3 (Quality) — Manual dispatcher review
No further action required. |
Wave 4 (Documentation) — Manual dispatcher review (informational)PR description is clear and includes client impact. No additional docs required. PASS_WITH_NOTES: optional CHANGELOG entry once this ships in a release. |
Summary
Moves the 5 Ruby 3.4 stdlib gems from being a Gemfile-level workaround to proper
add_dependencyentries incore/workarea-core.gemspec.Closes #780
Changes
core/workarea-core.gemspec— added 5add_dependencyentries:mutex_m— extracted from stdlib in Ruby 3.4csv— extracted from stdlib in Ruby 3.4drb— extracted from stdlib in Ruby 3.4logger— extracted from stdlib in Ruby 3.4ostruct— extracted from stdlib in Ruby 3.4Gemfile.lock— regenerated to reflect new resolved gems.Root
Gemfile— no change needed on this branch. The 5 stdlib gems were introduced as a workaround in PR #778's branch (not yet merged tonext). This PR establishes the correct long-term home; when #778 merges its Gemfile entries should be dropped in favour of these gemspec-level declarations.Why gemspec, not Gemfile
The root
Gemfileis only used for the monorepo dev environment. Downstream implementations installworkarea-coreas a gem and inherit itsgemspecdependencies — not itsGemfile. Declaring stdlib deps in the gemspec ensures any consumer using Ruby 3.4 gets them automatically without needing to modify their ownGemfile.Verification
Client Impact
None expected. Downstream implementations using Ruby < 3.4 are unaffected (gems exist but stdlib already provides them). Implementations using Ruby 3.4 benefit automatically — no changes required on their end.