• Sign In



  • Categories

    Extension Details



    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: true or 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-rails if present in your project

    Requirements

    • RuboCop — required for linting and formatting. Install via gem install rubocop or include it in your Gemfile.
    • Sorbet — optional, required only if "Enable Sorbet" is turned on. Your project must have a sorbet/ directory with a valid sorbet/config.
    • Ruby LSP — optional, required only if "Enable Ruby LSP" is turned on. Install via gem install ruby-lsp or include it in your Gemfile.

    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 exec when 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: true or 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-rails when present in the project
    • Restart Ruby LSP Language Server command available in the Extensions menu when enabled