Skip to content

Conversation

@justin808
Copy link
Collaborator

Summary

Updates the project from Ruby 2.7/3.0 to Ruby 3.3 to take advantage of the latest Ruby features and improvements. Ruby 3.3 is the current stable release with better performance and modern features.

Changes

  • Updated GitHub Actions workflows (.github/workflows/ruby.yml and rubocop.yml) to use Ruby 3.3
  • Replaced pry-byebug with debug gem (standard library in Ruby 3.0+) for better Ruby 3.3+ compatibility
  • Rebuilt Gemfile.lock with Ruby 3.3 dependencies

Pull Request checklist

  • Update documentation
  • [ ] Add/update test to cover these changes
  • [ ] Update CHANGELOG file

- Updated CHANGELOG.md with 3.3.0 release for Propshaft support
- Renamed master branch references to main in documentation links
- Updated VERSIONS.md to show main branch instead of master
@justin808 justin808 force-pushed the jg-/update-ruby-version branch from c34a5c7 to 067a605 Compare November 23, 2025 07:37
- Update GitHub Actions workflows to test Ruby 2.7, 3.0, 3.1, 3.2, and 3.3
- Ensures compatibility across a wide range of Ruby versions
- Rebuilt Gemfile.lock with Ruby 3.4 (compatible with 3.x)
@justin808 justin808 force-pushed the jg-/update-ruby-version branch from 067a605 to c30c40e Compare November 23, 2025 07:47
justin808 and others added 5 commits November 22, 2025 21:50
The previous pry-byebug 3.11.0 required byebug ~> 12.0, which only
supports Ruby >= 3.1. This caused CI failures on Ruby 3.0 because
bundle lock would modify the Gemfile.lock during the build.

This change constrains pry-byebug to ~> 3.8.0, which uses byebug ~> 11.0
that supports Ruby 2.7 through 3.3, ensuring the Gemfile.lock works
across all supported Ruby versions without modification.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
The previous Nokogiri version 1.13.8 did not support Ruby 3.2+,
causing CI test failures for Ruby 3.2 and 3.3.

Updated all gemfile.lock files to use Nokogiri 1.18.10 which
supports Ruby versions from 2.6 through 3.4+.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Nokogiri 1.18.10 uses x86_64-linux-gnu as the platform identifier
instead of x86_64-linux. The CI workflow runs 'bundle lock --add-platform x86_64-linux'
which was causing the lockfile to be modified because the platform
wasn't pre-resolved.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Nokogiri 1.18.10+ uses x86_64-linux-gnu instead of x86_64-linux as
the platform identifier. Updated the CI workflow to use the correct
platform and removed the arm64-darwin-24 platform from Gemfile.lock
to keep it consistent with CI expectations.

This fixes the check_react_and_ujs test failures where Gemfile.lock
was being modified during CI runs.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Nokogiri 1.18+ requires Ruby >= 3.2, which breaks Ruby 3.0 and 3.1 support.
Additionally, nokogiri 1.18 changed the platform identifier from
x86_64-linux to x86_64-linux-gnu, causing lockfile inconsistencies.

Using nokogiri 1.17.2 which:
- Supports the full Ruby 2.7-3.3 range
- Uses the x86_64-linux platform identifier consistently
- Resolves dependency issues across all supported Ruby versions

Reverted CI workflow to use x86_64-linux platform (not -gnu).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
@justin808 justin808 force-pushed the jg-/update-ruby-version branch from 7de2087 to bd0aac3 Compare November 25, 2025 00:45
justin808 and others added 7 commits November 24, 2025 15:09
The x86_64-linux platform is already present in all Gemfile.lock files,
so running 'bundle lock --add-platform' is unnecessary and was causing
the lockfile to be modified during CI runs, particularly on Ruby 2.7.

This fixes the check_react_and_ujs (2.7) test failure.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Created gemfiles/ruby27.gemfile with nokogiri ~> 1.15.0 to support Ruby 2.7.
Nokogiri 1.16.0+ requires Ruby >= 3.0, making it impossible to use a single
Gemfile.lock for Ruby 2.7-3.3.

Changes:
- Added gemfiles/ruby27.gemfile with nokogiri 1.15.x constraint
- Generated gemfiles/ruby27.gemfile.lock with nokogiri 1.15.7
- Updated CI workflow to use ruby27.gemfile for Ruby 2.7 tests
- Main Gemfile.lock remains for Ruby 3.0+ with nokogiri 1.17.2

This allows supporting the full Ruby 2.7-3.3 range while working around
the nokogiri version compatibility constraints.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Added conditional nokogiri ~> 1.17.0 constraint in Gemfile for Ruby 3.0+.
Regenerated Gemfile.lock with nokogiri 1.17.2 for Ruby 3.0-3.3 support.

This ensures:
- Ruby 2.7 uses gemfiles/ruby27.gemfile with nokogiri 1.15.7
- Ruby 3.0+ uses main Gemfile with nokogiri 1.17.2

Also fixed cache key logic in CI workflow to properly separate cache
by Ruby version and gemfile.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Use absolute path for vendor/bundle to prevent bundler from creating
directories relative to BUNDLE_GEMFILE location (gemfiles/vendor/).

This fixes untracked file errors in Ruby 2.7 CI runs.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Bundler creates a .bundle config directory relative to BUNDLE_GEMFILE
location. Added gemfiles/.bundle/ to .gitignore to prevent CI check
from failing due to untracked files when using ruby27.gemfile.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Add Ruby version-specific nokogiri constraints to ensure compatibility:
- nokogiri ~> 1.15.0 for Ruby < 3.0
- nokogiri ~> 1.17.0 for Ruby >= 3.0

This extends the constraint added to the main Gemfile to all the
test gemfiles used for different configurations.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Created separate lockfiles for Ruby 2.7 with nokogiri 1.15.x:
- gemfiles/base.gemfile.ruby27.lock
- gemfiles/propshaft.gemfile.ruby27.lock
- gemfiles/shakapacker.gemfile.ruby27.lock
- gemfiles/sprockets_3.gemfile.ruby27.lock
- gemfiles/sprockets_4.gemfile.ruby27.lock

Updated CI workflow test job to:
- Copy Ruby 2.7-specific lockfile before bundle install
- Add Ruby version to cache key for proper cache separation

Regenerated all gemfiles/*.gemfile.lock with Ruby 3.0 to use
nokogiri 1.17.2 for Ruby 3.0-3.3 support.

This provides full test coverage for all Ruby versions (2.7-3.3)
while working around nokogiri version incompatibilities.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant