Open
Conversation
Older migrations load the Menu model before the menu_type column exists. Rails 7.2 requires an explicit attribute declaration for enums not yet backed by a database column. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Progress Update (March 1, 2026 — audit hardening pass)
Completed a best-practices cleanup/audit pass after the Rails 7.2 + Solid Queue migration work.
What was tightened
lib/tasks/release.rake.minitest < 6pin.rack-mini-profilerto Rack-3-compatible~> 4.0.config.load_defaultsto7.2.solid_queue:bootstrapto validate all queue schema tables, not just sentinel tables.demoqueue.MissionControl::Jobs.loggerin production.app/javascript/channels/*).react-stripe-elementsTS shim.development.rb.cleanup:trim_analytics.RAILS_LOG_TO_STDOUTfromapp.json(logging now explicitly configured in env files).Commit map (audit pass)
23b7339Fix release task Sentry deploy release identifier5e31e47Remove legacy minitest version pin2b51e4eLoad Rails 7.2 framework defaultsf45bfedValidate full Solid Queue schema during bootstrapdd4e658Upgrade rack-mini-profiler to Rack 3 compatible release452d3e8Move queue demo job onto dedicated demo queue6a2be35Limit Mission Control logger wiring to productionb263644Prune unused ActionCable JS and refresh Rails frontend deps6df9102Remove obsolete PG coder compatibility initializere918717Drop dead react-stripe-elements TypeScript shim1ca077aRemove stale pre-cutover queue config commentsdde144fCentralize Solid Queue retention and trim redundant env configValidation snapshots
215 runs, 0 failures46 pass, 0 failbun run typecheckSafety tag
before_audit->88b8864c0a1665109f35e9102e625266bac65e90Progress Update (March 1, 2026)
Completed in this PR branch since the initial plan post:
bin/jobs), removed Sidekiq runtime wiring, added Mission Control Jobs admin link and demo job trigger.cleanup:trim_analytics.async.react-stripe-elementsto@stripe/react-stripe-js/@stripe/stripe-js.@material-ui/*dependencies.ReactDOM.rendertocreateRoot.tsconfig.app.jsonand app typing fixes (bun run typechecknow passes).Recent commit map:
371cc9dStabilize app TypeScript checks after React 18 migrationc090201Update README for Solid Queue and async Action Cablecb39cdeRemove unused react-is dependencyfb5bc86Upgrade React to 18 and migrate entrypoints to createRoot9819633Replace Material UI builder components with local styled UIc5ea276Migrate checkout Stripe integration to stripe-js Elements2a1fce5Remove Redis runtime dependency and use async Action Cablee7a4153Bootstrap Solid Queue tables during setup and releaseValidation snapshots on this branch:
213 runs, 0 failures)46 pass, 0 fail)bun run typecheck)Motzi Upgrade Plan: Rails + React + Queue Stack
1) Goals
2) Recommended Targets
Primary target (recommended)
7.2.x3.4.x(or latest compatible3.x)18.xsolid_queue(database-backed ActiveJob)async(if real-time is unused) orsolid_cable(if durability/multi-instance needed)3) Current State Snapshot
gem 'rails', '~> 6.1.7.3'inGemfile.railties < 7.1.ReactDOM.renderentrypoints.react-stripe-elements(legacy)@material-ui/corev4 (supports React 16/17)ShopConfig.shop.queue_adapter)/sidekiqroute mountProcfileandProcfile.devsidekiq/deployhook in release taskconfig/cable.yml4) Scope and Non-Goals
In scope
Out of scope (for this cycle)
5) Delivery Strategy
6) Work Plan (Detailed)
Phase 0: Baseline, Safety Nets, and Branching
Objectives
Tasks
upgrade-rails-react-queue.bundle list | rg 'rails|activeadmin|sidekiq|redis'cat package.json | rg 'react|material|stripe|testing-library'bundle exec rails testbun testbun run typecheckExit criteria
Phase 1: ActiveAdmin Upgrade (Unlock Rails 7.1+)
Why first
railties < 7.1).Tasks
activeadminto latest 3.x compatible with target Rails.ransack,inherited_resources,kaminariif needed. we are not concerned about ransack search safety since it's admin only; ok to patch.app/admin/menus.rbapp/admin/users.rbapp/admin/bakery.rbconfig/initializers/active_admin.rbGonFooterview factory registration.Risk hotspots
member_actioncustom flows and redirects.controller do ...overrides (especially destroy batch logic).Exit criteria
Phase 2: Rails Upgrade Path (6.1 -> 7.0 -> 7.1 -> 7.2)
Strategy
config.load_defaultschanges separate from gem version bump when possible.Phase 2A: Rails 6.1 -> 7.0
Tasks:
~> 7.0.x.bin/rails app:updateand apply only required config changes.Exit criteria:
Phase 2B: Rails 7.0 -> 7.1
Tasks:
~> 7.1.x.puma,sentry,newrelic,paper_trail,ahoy_*compatibility.Exit criteria:
Phase 2C: Rails 7.1 -> 7.2
Tasks:
~> 7.2.x.Exit criteria:
Phase 3: Replace Sidekiq/Redis with DB-backed Queue
Recommended implementation
solid_queuefor ActiveJob.Tasks
solid_queuegem and run installer/migrations.mission_control-jobsgem for web UI (replaces Sidekiq Web):MissionControl::Jobs::Engineat/jobsin routes./sidekiqmount).config/shop.ymland set explicit adapter by env.config.active_job.queue_adapter = :solid_queuein production.default,mailers,active_storage) or map them explicitly in Solid Queue config.Procfile/Procfile.devwith Solid Queue worker command.config/initializers/sidekiq.rbrequire 'sidekiq/web'and route mount/sidekiq(replaced by/jobsMission Control mount)require "sidekiq/deploy"andSidekiq::Deploy.mark!call in release taskgem 'sidekiq'andgem 'redis'(after cable migration decision)Cutover plan
Exit criteria
deliver_laterandperform_laterjobs execute reliably.Phase 4: Remove Redis Dependency from ActionCable
Decision point
asyncand remove Redis.solid_cable.Tasks
config/cable.ymlproduction adapter toasync.solid_cable.config/initializers/redis.rbif unused globally.Exit criteria
Phase 5: React Upgrade Path (16 -> 18)
Why phased
Phase 5A: Dependency modernization (while app still stable)
Tasks:
react-stripe-elementswith@stripe/react-stripe-js+@stripe/stripe-js.injectStripe/StripeProviderto hooks +ElementsAPI.@material-ui/core/@material-ui/iconsto MUI v5+ (@mui/material,@mui/icons-material).makeStyles/legacy imports where needed).@testing-library/reactand peers to React 18 compatible versions.react-test-rendererwith target React.Exit criteria:
Phase 5B: React 18 core migration
Tasks:
reactandreact-domto 18.x.ReactDOM.renderentrypoints withcreateRoot.StrictModeafter functional parity is confirmed.Exit criteria:
createRoot.Phase 6: Hardening, Deploy, and Cleanup
Tasks
README.md(remove Redis requirement)Exit criteria
7) PR Breakdown (Suggested)
PR-01: Baseline tests + upgrade harness docs.PR-02: ActiveAdmin 3.x upgrade and admin fixes.PR-03: Rails 7.0.PR-04: Rails 7.1 + defaults.PR-05: Rails 7.2 + defaults.PR-06: Solid Queue introduction (keep Sidekiq still present, dark launch if needed).PR-07: Switch queue adapter, remove Sidekiq runtime.PR-08: ActionCable Redis removal (asyncorsolid_cable).PR-09: Stripe migration to modern React Stripe SDK.PR-10: MUI migration + test tooling updates.PR-11: React 18 bump +createRootentrypoint migration.PR-12: Docs/infrastructure cleanup and final remove-redis pass.8) Risk Register
High risk
react-stripe-elements.Mitigations:
Medium risk
Mitigations:
9) Manual QA Checklist (Release Gates)
SendWeeklyMenuJobenqueues and processes10) Definition of Done
7.2.x.3.x, all admin critical flows passing.18.xwith noReactDOM.renderusage.