Skip to content

fix(gemset): use batch launchers on Windows - #353

Merged
vitallium merged 1 commit into
mainfrom
fix/windows-gem-launchers
Oct 27, 2026
Merged

vitallium merged 1 commit into
mainfrom
fix/windows-gem-launchers

Conversation

@vitallium

Copy link
Copy Markdown
Collaborator

Summary

Fixes #352.

Managed gems currently resolve to extensionless RubyGems scripts on every platform. Windows cannot spawn those scripts directly, causing error 193 when starting language servers such as Solargraph and Ruby LSP.

  • Select the RubyGems .bat launcher on Windows using the host OS already passed to Gemset.
  • Preserve extensionless paths on macOS and Linux and existing platform-specific environment handling.
  • Cover Windows launcher selection for Solargraph, Ruby LSP, and the managed debugger, including a gem home containing spaces.

The shared helper handles both cached and newly installed managed language servers, as well as the managed debugger. Custom binary paths and PATH lookup are unchanged.

Verification

  • Observed the Windows regression test fail before the fix and pass afterward.
  • TMPDIR=/tmp cargo test — 83 tests passed; rerun before opening this PR.
  • TMPDIR=/tmp cargo fmt --check — passed.
  • TMPDIR=/tmp cargo clippy --all-targets --all-features --locked -- -D warnings — passed.
  • git diff --check — passed.

TMPDIR=/tmp avoids a local build-cache socket-path length limit. Windows/Zed end-to-end startup was not tested on this macOS machine. The WASM build was not run because the target is not installed.

@cla-bot cla-bot Bot added the cla-signed label Oct 27, 2026
@vitallium
vitallium merged commit d799a32 into main Oct 27, 2026
11 checks passed
@vitallium
vitallium deleted the fix/windows-gem-launchers branch October 27, 2026 18:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Language servers installed as bundles on Windows fail to spawn

1 participant