Our great sponsors
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
-
ruby_language_server
Language Server implementation in Ruby for Ruby. Development happens on the develop branch. Production is master.
-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
-
tailor
Discontinued A RubyGem that allows for checking standard styling of Ruby files. (by turboladen)
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.
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.
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.
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)...