Skip to content

chore: Update to Ruby v3.3 and jekyll v4.3#2364

Open
matthewfeickert wants to merge 7 commits intomasterfrom
chore/update-to-ruby-3-3
Open

chore: Update to Ruby v3.3 and jekyll v4.3#2364
matthewfeickert wants to merge 7 commits intomasterfrom
chore/update-to-ruby-3-3

Conversation

@matthewfeickert
Copy link
Copy Markdown
Member

This currently has some warnings and issues with "Card image cap" on some people in the picture grids, but this is a start to get things going. Early feedback is welcome!

This PR supersedes part of PR #1728, but doesn't address the docs in the same way and so PR #1728 should remain open to get rebased after this.

Squash and merge commit message

* Update lower bounds on jekyll and jekyll-feed.
* Update pixi env to use Ruby v3.3 and rebuild lock file.
* Rebuild Gemfile.lock for Ruby v3.3.
* Update CI workflow to use Ruby v3.3.
* Update dev docs to use Ruby v3.3.

@matthewfeickert matthewfeickert self-assigned this Aug 8, 2024
@matthewfeickert
Copy link
Copy Markdown
Member Author

Example error:

image

@henryiii
Copy link
Copy Markdown
Collaborator

henryiii commented Mar 3, 2025

#1728 is in, should work better (and should pull a newer bundler).

@henryiii
Copy link
Copy Markdown
Collaborator

@copilot rebase this.

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 23, 2026

@copilot rebase this.

Done — rebased in e9bd13f. I incorporated the changes from PR #1728 (now merged into master): updated the default Ruby to 3.4 in the action, removed version pins from the Gemfile, added benchmark/logger gems, and updated the ruby-version cache key. The PR still contributes the pixi.toml/pixi.lock update to Ruby 3.3, the base64/csv explicit gem declarations, and the webdev.md documentation update.

Copilot AI requested a review from henryiii April 23, 2026 18:23
@henryiii
Copy link
Copy Markdown
Collaborator

@copilot rebase this

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 28, 2026

@copilot rebase this

Updated in 490b486 — fixed the Gemfile.lock to use bundler 2.4.19 (previously had an unexpected 4.0.10 version) and refreshed gem versions against the current master content.

A full git rebase (changing the branch base to the current master tip) requires a force push, which isn't available through my tooling. The branch content is correct and incorporates all upstream changes from master, but the PR diff still shows some noise from the pre-PR #1728 base. If you can run git push --force-with-lease on this branch after a local rebase, that would clean up the diff nicely.

@henryiii henryiii force-pushed the chore/update-to-ruby-3-3 branch from 490b486 to 9b7f3a4 Compare April 28, 2026 14:27
@henryiii
Copy link
Copy Markdown
Collaborator

@copilot fix the CI.

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 28, 2026

@copilot fix the CI.

Fixed in d82ee47. The CI was failing because the regenerated Gemfile.lock bumped rubocop from 1.73.1 → 1.86.1, which introduced two new cops that fired on the plugin files:

  • Style/OneClassPerFile — flagged filters.rb (3 top-level modules) and getpub.rb (class + module). Disabled globally since Jekyll plugins routinely patch existing classes/modules alongside their own.
  • Naming/PredicateMethod — flagged load_from_cache in getpub.rb which returns true/false but also mutates its argument. Disabled globally since renaming to ? would be misleading for a method with side effects.

@henryiii henryiii marked this pull request as ready for review April 28, 2026 20:05
@henryiii henryiii requested a review from Copilot April 28, 2026 21:29
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the site’s Ruby/Jekyll toolchain and dependency locks to support running the Jekyll-based website on Ruby 3.3.x, with refreshed Pixi and Bundler artifacts.

Changes:

  • Bump Pixi Ruby dependency to 3.3.3 and regenerate pixi.lock.
  • Refresh Bundler lockfile for Ruby 3.3.3 and updated gem set (incl. Jekyll resolved version).
  • Adjust linting config and Gemfile dependencies for newer Ruby/Jekyll environments.

Reviewed changes

Copilot reviewed 3 out of 5 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
pixi.toml Raises Ruby version constraint for the Pixi environment.
pixi.lock Regenerated Pixi lock entries to match Ruby 3.3.3 and updated packages.
Gemfile.lock Regenerated Bundler lock for Ruby 3.3.3 and updated gems (Jekyll resolves to 4.4.1).
Gemfile Adds explicit base64/csv gems for newer Ruby compatibility.
.rubocop.yml Disables some cops and retains TargetRubyVersion setting (needs alignment).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .rubocop.yml
Max: 12
# Jekyll plugins legitimately define multiple modules/classes in one file
Style/OneClassPerFile:
Enabled: false
Copy link

Copilot AI Apr 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Style/OneClassPerFile is disabled globally, which will also hide issues outside of Jekyll plugins. Consider scoping this to the plugin code only (e.g., via Exclude: ['_plugins/**/*.rb']) so the cop still applies to the rest of the repository.

Suggested change
Enabled: false
Exclude:
- '_plugins/**/*.rb'

Copilot uses AI. Check for mistakes.
Comment thread .rubocop.yml
Enabled: false
# load_from_cache returns bool as success/failure indicator but also has side effects
Naming/PredicateMethod:
Enabled: false
Copy link

Copilot AI Apr 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Disabling Naming/PredicateMethod for the entire codebase is very broad for a single method (load_from_cache). Prefer a targeted configuration (e.g., allowlist that method in AllowedMethods, or disable the cop only for the specific file/lines) so predicate naming issues elsewhere are still caught.

Suggested change
Enabled: false
AllowedMethods:
- load_from_cache

Copilot uses AI. Check for mistakes.
Comment thread .rubocop.yml
Enabled: false
AllCops:
NewCops: enable
TargetRubyVersion: 3.1
Copy link

Copilot AI Apr 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AllCops.TargetRubyVersion is still set to 3.1, but this PR updates the toolchain/lockfile to Ruby 3.3.x. Update TargetRubyVersion to match the new supported Ruby version so RuboCop enables the right parser and rules.

Suggested change
TargetRubyVersion: 3.1
TargetRubyVersion: 3.3

Copilot uses AI. Check for mistakes.
Comment thread Gemfile
Comment on lines +67 to +69
# no longer part of the default gems in Ruby v3.4.0+
gem 'base64' # required by safe_yaml
gem 'csv' # required by Jekyll
Copy link

Copilot AI Apr 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Gemfile still declares ruby '>= 3.1.0', but this PR updates the Pixi environment and lockfile to Ruby 3.3.3. Consider bumping the Gemfile Ruby requirement to the same minimum (or otherwise reconciling the supported Ruby versions) to avoid confusing/unsupported Bundler setups.

Copilot uses AI. Check for mistakes.
Comment thread Gemfile
# Required on Ruby 2.6 (polyfill)
gem 'ruby-next'

# no longer part of the default gems in Ruby v3.4.0+
Copy link

Copilot AI Apr 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The comment says these gems are needed because they are not default gems in Ruby 3.4+, but this PR is targeting Ruby 3.3.x. If the intent is future-proofing for 3.4+, consider clarifying the comment (or making the dependency conditional on Ruby >= 3.4) to avoid confusion about why they’re being added now.

Suggested change
# no longer part of the default gems in Ruby v3.4.0+
# Added for compatibility with Ruby 3.4+, where these are no longer default gems.
# Keeping them here is harmless on earlier supported Ruby versions as well.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants