Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Ruby Fast LSPNew to Visual Studio Code? Get it now.
Ruby Fast LSP

Ruby Fast LSP

Naveen Raj K

|
432 installs
| (0) | Free
Ruby navigation, completion, diagnostics, and type inference for Ruby and ERB projects
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Ruby Fast LSP

A Ruby language server written in Rust, with type-aware navigation, diagnostics, and editor features for Ruby and ERB projects.

Navigate your project, complete method calls, rename symbols, and get feedback as you edit. Explore type inference and Hash shapes for more detail about the values in your code.

Ruby variable and method completion in VS Code

Explore the feature guide · View this demo and its example

The demo uses generic Ruby code with AI suggestions disabled. Playback pauses are edited for readability; they are not latency measurements.

Get started

VS Code: install Ruby Fast LSP and open your project. An Open VSX package is also available for compatible editors.

Other LSP clients: install the server and configure your client to launch it with --stdio and language ID ruby:

npm install -g @ruby-fast/lsp
ruby-fast-lsp --stdio

Build from source: use the repository's pinned Rust toolchain:

cargo build --locked --release --bin ruby-fast-lsp
./target/release/ruby-fast-lsp --stdio

See usage and support boundaries for runtime selection, formatting, templates, framework integrations, and troubleshooting. Package availability does not certify every runtime or platform combination; release acceptance is tracked for each candidate through the release checklist.

What it does

  • Go to definition, references, implementation, rename, and call/type hierarchies.
  • Completion, signature help, hover, compact type hints, and symbol search.
  • Syntax and semantic diagnostics that follow edits and cross-file definitions.
  • Type inference from Ruby bodies, YARD, and RBS, including structural Hash shapes, collection blocks, and supported lambda/proc calls.
  • Isolated indexing for multiple Ruby projects, exact runtime/dependency selection, and JRuby Java navigation.
  • Ruby analysis in ERB, optional RuboCop/Standard linting and formatting, and bundled Rails, RSpec, Minitest, Sinatra, and Cucumber integrations.

Inference is conservative: unsupported dynamic behavior or incomplete evidence remains Unknown. The feature contracts describe supported forms and limits.

Explore the code

Path Purpose
src/ Server, workspace lifecycle, and LSP adapters; start at src/main.rs, src/lsp/service.rs, and src/server/mod.rs
crates/ruby-analysis/ Shared facts, indexing, inference, and semantic queries
crates/ RBS/JVM support, extension APIs and hosts, and the external LSP test harness
extensions/ Framework integrations and extension examples
editors/ Editor adapters and npm/VSIX packaging
src/test/ Feature, lifecycle, robustness, and CLI tests, and shared fixtures
docs/ / support/ Maintained guides / validation tools, assets, and evidence

Next priorities

  • Collect dependency sources in one traversal: the declaration seed and the collector still walk each project file separately, and dependencies take the collector's declarations. A seed beside the collector cost about 20% of dependency collection, so the merge waits for a design where the seed's declarations come from inside the collector walk.
  • Revisit a dedicated per-project writer task only if writer_wait p95 approaches its 50 ms budget; named handle operations are the writer today.
  • Improve proof coverage for user-defined yielding methods and additional RBS forms, guided by reduced real-world regressions.
  • Consolidate repeated argument/type binding logic and make unexplained Unknown outcomes easier to investigate.
  • Refine dependency-driven invalidation so cross-file refresh stays correct without unnecessary work during editing.
  • Expand robustness coverage and native/editor acceptance before broader public promotion.

These are directions, not delivery promises. Completed implementation plans and old progress logs live in Git history; this README is the current roadmap.

Contribute

Start with the contributor guide and test guide. Use small, generic reproductions when reporting or fixing a bug.

cargo test --locked --workspace
python3 -B support/structure/check.py

The performance guide explains when and how to measure a change. Issues and contributions are welcome on GitHub.

MIT licensed. See license.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft