Build Status
Ruby LSP extension
Ruby DX Slack

Ruby LSP

The Ruby LSP is an implementation of the language server protocol
for Ruby, used to improve rich features in editors. It is a part of a wider goal to provide a state-of-the-art
experience to Ruby developers using modern standards for cross-editor features, documentation and debugging.

Want to discuss Ruby developer experience? Consider joining the public
Ruby DX Slack workspace.

Usage

With VS Code

If using VS Code, all you have to do is install the Ruby LSP extension to
get the extra features in the editor. Do not install this gem manually.

With other editors

See editors for community instructions on setting up the Ruby LSP.

The gem can be installed by doing

gem install ruby-lsp

NOTE: starting with v0.7.0, it is no longer recommended to add the ruby-lsp to the bundle. The gem will generate a
custom bundle in .ruby-lsp/Gemfile which is used to identify the versions of dependencies that should be used for the
application (e.g.: the correct RuboCop version).

For older versions, if you decide to add the gem to the bundle, it is not necessary to require it.

group :development do
  gem "ruby-lsp", require: false
end

Documentation

See the documentation for more in-depth details about the
supported features.

For creating rich themes for Ruby using the semantic highlighting information, see the semantic highlighting
documentation
.

Configuring code indexing

By default, the Ruby LSP indexes all Ruby files defined in the current project and all of its dependencies, including
default gems, except for

  • Gems that only appear under the :development group
  • All Ruby files under test/**/*.rb

By creating a .index.yml file, these configurations can be overridden and tuned.

# Exclude files based on a given pattern. Often used to exclude test files or fixtures
excluded_patterns:
  - "**/spec/**/*.rb"

# Include files based on a given pattern. Can be used to index Ruby files that use different extensions
included_patterns:
  - "**/bin/*"

# Exclude gems by name. If a gem is never referenced in the project's code and is only used as a tool, excluding it will
# speed up indexing and reduce the amount of results in features like definition or completion
excluded_gems:
  - rubocop
  - pathname

# Include gems by name. Normally used to include development gems that are excluded by default
included_gems:
  - prism

Addons

The Ruby LSP provides an addon system that allows other gems to enhance the base functionality with more editor
features. This is the mechanism that powers addons like

For instructions on how to create addons, see the addons documentation.

Learn More

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/Shopify/ruby-lsp.
This project is intended to be a safe, welcoming space for collaboration, and contributors
are expected to adhere to the
Contributor Covenant
code of conduct.

If you wish to contribute, see CONTRIBUTING for development instructions and check out our pinned
roadmap issue for a list of tasks to get started.

License

The gem is available as open source under the terms of the
MIT License.