Extension Details

- Ruby Toolkit
- by Jonathan Pike
- 9 Recent Installs | 34 Total Installs
- Ruby linting, formatting, and code intelligence via RuboCop, Sorbet, and Ruby LSP for Nova.
- Repository
- Bug Reports
-
Launch Subprocesses
-
This extension is allowed to:
Readme
Ruby Toolkit
Ruby Toolkit integrates RuboCop, Sorbet, and Ruby LSP into Nova, providing linting, formatting, type checking, and code intelligence for Ruby projects.
Features
RuboCop
- Linting diagnostics shown inline and in Nova's Issues sidebar, updated on every save
- Optional auto-correct on save using RuboCop's safe autocorrections
Sorbet
- Type-checking diagnostics via Sorbet's native LSP server (
srb tc --lsp) - Inline type errors for files with
# typed: trueor stricter
Ruby LSP
- Code intelligence via Shopify's ruby-lsp server
- Go-to-definition, hover documentation, find references, and code completion
- Enhanced Rails support via
ruby-lsp-railsif present in your project
Requirements
- RuboCop — required for linting and formatting. Install via
gem install rubocopor include it in yourGemfile. - Sorbet — optional, required only if "Enable Sorbet" is turned on. Your project must have a
sorbet/directory with a validsorbet/config. - Ruby LSP — optional, required only if "Enable Ruby LSP" is turned on. Install via
gem install ruby-lspor include it in yourGemfile.
Configuration
Open Extensions → Extension Library..., select Ruby Toolkit, and open the Preferences tab.
| Preference | Default | Description |
|---|---|---|
| Command Prefix | (blank) | Prefix all Ruby language server commands before bundle exec |
| Use Bundler | Off | Run RuboCop and Sorbet via bundle exec instead of system binaries |
| Format on Save | Off | Apply RuboCop safe auto-corrections when a file is saved |
| Enable Sorbet | Off | Start the Sorbet language server for type checking |
| Enable Ruby LSP | Off | Start the Ruby LSP server for code intelligence |
Preferences can also be set per-project in Project → Project Settings...
Command Prefix is optional and blank by default. Set it to a command and any arguments required by your local environment. The prefix is applied to all Ruby language server commands, before bundle exec when enabled.
For example, users of Shadowenv can set the prefix to shadowenv exec --, producing commands such as shadowenv exec -- bundle exec rubocop --lsp.
The prefix accepts an executable and arguments separated by whitespace. Use single or double quotes for arguments containing spaces, or a backslash to escape the next character outside single quotes. Shell expansion, pipes, and redirects are not supported. Commands run from the project directory. A project prefix overrides the global prefix; an explicitly blank project prefix disables it for that project.
After changing the prefix, restart running language servers using the extension commands below.
Bundler
If your project manages RuboCop or Sorbet through Bundler (i.e. they are in your Gemfile), enable Use Bundler so the extension runs bundle exec rubocop and bundle exec srb tc --lsp. This ensures the correct gem versions are used.
Ruby LSP is always run without bundle exec — it manages its own Bundler environment to correctly hook into your project's dependencies.
Commands
Three commands are available in the Extensions menu to restart individual language servers without reloading the extension:
- Restart RuboCop Language Server
- Restart Sorbet Language Server (visible when Sorbet is enabled)
- Restart Ruby LSP Language Server (visible when Ruby LSP is enabled)
These are useful after gem updates or when a server gets into a bad state.
Release Notes
Version 1.1
- Add an optional Command Prefix preference for RuboCop, Sorbet, and Ruby LSP, applied before
bundle execwhen enabled - Support project-specific prefix overrides, quoted arguments, and escaped characters
Version 1.0
Initial release.
RuboCop
- Lint Ruby files on save via RuboCop's LSP server (
rubocop --lsp), with diagnostics shown inline and in Nova's Issues sidebar - Optional auto-correct on save using RuboCop's safe autocorrections (
textDocument/formatting) - Support for running via
bundle exec(Use Bundler preference) - Restart RuboCop Language Server command available in the Extensions menu
Sorbet
- Optional Sorbet type checking via
srb tc --lsp - Diagnostics shown inline for files with
# typed: trueor stricter - Support for running via
bundle exec - Restart Sorbet Language Server command available in the Extensions menu when enabled
Ruby LSP
- Optional Ruby LSP integration for code intelligence (go-to-definition, hover, find references, completion)
- Enhanced Rails support via
ruby-lsp-railswhen present in the project - Restart Ruby LSP Language Server command available in the Extensions menu when enabled