Our great sponsors
-
https://github.com/castwide/solargraph Seems to be the most mature/developed one. Slow on my system, bad documentation. Language docs are shipped as "cores" you imperatively download that float around in your home directory; this is messy and prone to failure. Doesn't have any docs for versions of ruby past 2.7.
-
https://github.com/sorbet/sorbet A type checker. Created before Ruby's signature format and uses its own messy eDSL for type annotations. Has a language server. I don't know if this is usable without first adding type annotations to your code. No idea if it supports language and library documentation; there's no real docs for its LSP mode other than "here, have a vscode extension", and digging through the codebase is... difficult.
-
InfluxDB
Access the most powerful time series database as a service. Ingest, store, & analyze all types of time series data in a fully-managed, purpose-built database. Keep data forever with low-cost storage and superior data compression.
-
https://github.com/soutaro/steep Also a type checker. This one uses rbs files. Not sure what subset of LSP features it supports either.
-
https://github.com/Shopify/ruby-lsp Fairly new project, started in June. Digging through issues indicates it's meant to complement Sorbet's language server. Seems immature right now; it only supports a few queries and does so in janky ways. Probably not the best choice right now, but seems promising.
-
ruby_language_server
Language Server implementation in Ruby for Ruby. Development happens on the develop branch. Production is master.
https://github.com/kwerle/ruby_language_server Seems to be abandoned in an incomplete state, with only minor bug fixes for years.
-
https://github.com/swistak35/orbacle Hasn't been updated in ~4 years. Someone's master's thesis project. Incomplete.
-
https://github.com/rubyide/vscode-ruby/tree/main/packages/language-server-ruby Part of a VS Code extension. Uses tree-sitter to parse and analyze code. Feels the most technically sound, though still early in development. Unmaintained since April.
-
SonarLint
Clean code begins in your IDE with SonarLint. Up your coding game and discover issues early. SonarLint is a free plugin that helps you find & fix bugs and security issues from the moment you start writing code. Install from your favorite IDE marketplace today.
-
https://github.com/mtsmfm/language_server-ruby Abandoned project from 4-5 years ago.
-
I realize this might not be for everyone, but I'm writing it in Rust using Lib-ruby-parser and tower-lsp: two existing libraries that handle a bunch of the heavy lifting for me. I'm more productive in Rust than with Ruby at this point, despite doing Ruby full time for 15 years, plus I really really don't want to have to deal with a slow LSP--that was the whome impetus for this project. I started in the spring, made a bunch of headway, then backtracked to redo the internals to make it easier to handle monkeypatching, overriding/redefining of methods, etc. across your project.
-
I realize this might not be for everyone, but I'm writing it in Rust using Lib-ruby-parser and tower-lsp: two existing libraries that handle a bunch of the heavy lifting for me. I'm more productive in Rust than with Ruby at this point, despite doing Ruby full time for 15 years, plus I really really don't want to have to deal with a slow LSP--that was the whome impetus for this project. I started in the spring, made a bunch of headway, then backtracked to redo the internals to make it easier to handle monkeypatching, overriding/redefining of methods, etc. across your project.
-
I'd also love some more diagnostics; things that you may get from flog or flay or rubocop (although I think integrating with rubocop would be ideal, given its influence on the ecosystem) or rails_best_practices (prior to rubocop, I actually tried making my own linter, tailor, but rubocop came along and was a million times better)...