Skip to content

Conversation

@vitallium
Copy link
Collaborator

When users switch Ruby versions (e.g., from 3.2 to 3.3), previously installed gems with native extensions can break due to ABI incompatibilities or something else. This also affects the same Ruby version compiled with different configurations or on different platforms.

This change introduces version-specific gem directories by hashing the output of ruby --version, which includes version, revision, and platform info. Gems are now installed to gems/<hash>/ instead of the extension root, ensuring each Ruby environment gets its own isolated gem set.

Closes #107

@cla-bot cla-bot bot added the cla-signed label Jan 9, 2026
When users switch Ruby versions (e.g., from 3.2 to 3.3), previously
installed gems with native extensions can break due to ABI
incompatibilities or something else. This also affects
the same Ruby version compiled with different configurations
or on different platforms.

This change introduces version-specific gem directories by hashing
the output of `ruby --version`, which includes version, revision,
and platform info. Gems are now installed to `gems/<hash>/` instead
of the extension root, ensuring each Ruby environment gets its own
isolated gem set.

Closes #107
@vitallium vitallium added the major Used to trigger a major version bump with Zed Zippy label Jan 9, 2026
@vitallium vitallium merged commit 995e504 into main Jan 9, 2026
12 checks passed
@vitallium vitallium deleted the vs/hashed-ruby-env branch January 9, 2026 21:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cla-signed major Used to trigger a major version bump with Zed Zippy

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Install extension gems into separate directories for each Ruby version

2 participants