Currently on Ruby 3.0:
-
Ruby 3.1: Less dramatic changes than 3.0, but introduces pattern matching refinements and a new debugger.
-
Ruby 3.2: Offers significant performance improvements with YJIT, better error messages, and syntax improvements.
Moving to 3.2 would be a good target as it has performance benefits without being too cutting edge.
Currently on Rails 6.1.7:
1 Rails 7.0: Major upgrade with improvements to JavaScript handling (Hotwire, Turbo, Stimulus), improved ActiveRecord querying, and encrypted attributes.
- Rails 7.1: Introduces Solid Queue (can replace Que), Active Record Async Query, and simplified mailer previews.
I'd recommend moving to Rails 7.0 as your next major step. The upgrade path would be:
- First, update to the latest Rails 7.0
- Fix all deprecation warnings
- Update Webpacker to 6.0 or prepare to transition to jsbundling-rails/cssbundling-rails
- Then make the jump to Rails 7.1
-
Background Jobs: Your app uses Que - Rails 7.1 has built-in Solid Queue which could simplify your stack.
-
Asset Pipeline: You're using Webpacker 5.4 - Rails 7 has moved away from Webpacker to jsbundling/cssbundling.
-
Authentication: Check if your Devise version is compatible with newer Rails versions before upgrading.
-
Testing: Ensure thorough test coverage before each upgrade step to catch regressions.
-
Docker: Your Docker setup includes custom patches for Rails 6.1/Ruby 3.0 compatibility - these may be unnecessary with newer versions.