Why I Stopped Waiting on Ruby LSP and Built My Own Fuzzy Symbol Search for VS Code

작성자

카테고리:

← 피드로
DEV Community · Abubakar Azeem · 2026-08-08 개발(SW)

Abubakar Azeem

If you’ve worked in a mid-to-large Rails codebase in VS Code, you’ve probably run into this: you want to jump to a method, you hit Ctrl/Cmd+T, you type a few letters — and either Ruby LSP hasn’t finished indexing yet, or your search doesn’t match because you’re one character off from the real name.

Ruby LSP’s workspace symbol search is genuinely useful once it’s running, but it has two costs: it needs the gem install + LSP setup, and it needs a full index build before symbol search is reliable. On a large monolith, that’s not instant. And even indexed, it does near-exact matching — abbreviate or misspell a symbol and you get nothing.

The alternative most people fall back on is VS Code’s built-in text search (Cmd+Shift+F). It’s fast and needs no setup, but it’s just text matching — it doesn’t know def process_payment is a method definition versus a comment mentioning “process_payment,” and it has no concept of a Ruby symbol at all.

I wanted something in between: instant, zero-setup, and actually aware of Ruby syntax — not just literal text.

What I built

Ruby Symbol Search indexes Ruby symbols directly via lightweight pattern matching (not a full AST parse — deliberately, so indexing stays near-instant even on file save) across:

  • Classes and modules (including class << self)
  • Methods (def)
  • Constants
  • Attributes (attr_reader/writer/accessor, mattr_*, attribute, delegate, and friends)
  • Associations (belongs_to, has_many, has_one, has_and_belongs_to_many)
  • Scopes, aliases, namespaces, rake tasks

The headline feature is fuzzy search: Ctrl+Shift+R / Cmd+Shift+R opens a typo-tolerant search across every indexed symbol in your workspace. Get the name roughly right and it finds it. You can also scope results to one file with @filename.

It also wires the same index into VS Code’s native “Go to Symbol in Workspace” picker (Ctrl/Cmd+T), Go to Definition (F12), and an Outline view in the sidebar — so it’s not a separate tool bolted on the side, it’s feeding the editor’s built-in navigation too.

What it isn’t

It’s not a replacement for Ruby LSP if you want type inference, hover documentation, or diagnostics. It’s specifically solving “get me to this symbol fast,” and it works fine alongside Ruby LSP if you have it installed (there’s a note in the README on avoiding duplicate results if both index the same symbols).

Try it

It’s free and MIT licensed:

If you hit a Ruby symbol pattern it doesn’t recognize, or a case where the fuzzy matching gets it wrong, open an issue — I’d rather know about the gaps than not.

원문에서 계속 ↗

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다