Skip to content

feat(ruby): add Fuzzy Ruby Server language server support#283

Open
candidosales wants to merge 3 commits intozed-extensions:mainfrom
candidosales:fuzzy-ruby-server
Open

feat(ruby): add Fuzzy Ruby Server language server support#283
candidosales wants to merge 3 commits intozed-extensions:mainfrom
candidosales:fuzzy-ruby-server

Conversation

@candidosales
Copy link
Copy Markdown

@candidosales candidosales commented Apr 20, 2026

Summary

Adds Fuzzy Ruby Server as a supported language server in the Ruby extension. This was requested by the Zed team after closing zed-industries/extensions#5107 — all Ruby language servers should live in this single extension rather than in separate extensions.

Fuzzy Ruby Server is a Rust binary (not a Ruby gem), so its integration intentionally bypasses the bundler/gemset installation logic used by the other language servers.

What's included

  • Registers fuzzy-ruby-server in extension.toml
  • Adds FuzzyRubyServer struct implementing the LanguageServer trait with a custom language_server_binary that:
    • Honors user-configured binary path via lsp.fuzzy-ruby-server.binary.path in Zed settings (with existence validation and a clear error message if the path is invalid)
    • Falls back to PATH lookup for the fuzzy binary
    • Returns a descriptive install hint if the binary is not found
  • Extends WorktreeLike and FakeWorktree with a which() method for testability
  • Adds 6 unit tests covering all resolution branches (custom path, missing path, PATH lookup, not found)

Installation

Users must install the binary manually:

cargo install --git https://github.com/doompling/fuzzy_ruby_server

Or configure an explicit path in Zed settings:

{
  "lsp": {
    "fuzzy-ruby-server": {
      "binary": {
        "path": "/path/to/fuzzy"
      }
    }
  }
}

Test plan

  • All 57 unit tests pass (cargo test)
  • Unit tests cover: valid custom path, invalid custom path, PATH lookup success, PATH lookup failure
  • Manual: open a Ruby project in Zed with fuzzy installed and verify completions work
  • Manual: configure an explicit binary path and verify it is used
  • Manual: verify the error message when fuzzy is not installed

@cla-bot cla-bot bot added the cla-signed label Apr 20, 2026
…erage

- Updated GEM_NAME to a non-empty sentinel value to avoid silent failures in gem operations.
- Refactored language_server_binary to separate binary resolution logic for custom paths and PATH lookups.
- Added checks for the existence and executability of custom binary paths.
- Enhanced testing coverage for language_server_binary, including tests for custom paths, PATH discovery, and error handling.
- Introduced new methods in the WorktreeLike trait to facilitate testing.
- Documented findings and suggestions for maintainability and reliability improvements.
@candidosales candidosales marked this pull request as ready for review April 20, 2026 03:35
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.

1 participant