Ruby
info
You can enable the extra with the :LazyExtras
command.
Plugins marked as optional will only be configured if they are installed.
Alternatively, you can add it to your lazy.nvim
imports
lua/config/lazy.lua
require("lazy").setup({
spec = {
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
{ import = "lazyvim.plugins.extras.lang.ruby" },
{ import = "plugins" },
},
})
Options
Additional options for this extra can be configured in your lua/config/options.lua file:
lua/config/options.lua
-- LSP Server to use for Ruby.
-- Set to "solargraph" to use solargraph instead of ruby_lsp.
vim.g.lazyvim_ruby_lsp = "ruby_lsp"
vim.g.lazyvim_ruby_formatter = "rubocop"
Below you can find a list of included plugins and their default settings.
caution
You don't need to copy the default settings to your config. They are only shown here for reference.
nvim-treesitter
- Options
- Full Spec
opts = { ensure_installed = { "ruby" } }
{
"nvim-treesitter/nvim-treesitter",
opts = { ensure_installed = { "ruby" } },
}
nvim-lspconfig
- Options
- Full Spec
opts = {
---@type lspconfig.options
servers = {
ruby_lsp = {
enabled = lsp == "ruby_lsp",
},
solargraph = {
enabled = lsp == "solargraph",
},
rubocop = {
-- If Solargraph and Rubocop are both enabled as an LSP,
-- diagnostics will be duplicated because Solargraph
-- already calls Rubocop if it is installed
enabled = formatter == "rubocop" and lsp ~= "solargraph",
},
standardrb = {
enabled = formatter == "standardrb",
},
},
}
{
"neovim/nvim-lspconfig",
---@class PluginLspOpts
opts = {
---@type lspconfig.options
servers = {
ruby_lsp = {
enabled = lsp == "ruby_lsp",
},
solargraph = {
enabled = lsp == "solargraph",
},
rubocop = {
-- If Solargraph and Rubocop are both enabled as an LSP,
-- diagnostics will be duplicated because Solargraph
-- already calls Rubocop if it is installed
enabled = formatter == "rubocop" and lsp ~= "solargraph",
},
standardrb = {
enabled = formatter == "standardrb",
},
},
},
}
mason.nvim
- Options
- Full Spec
opts = { ensure_installed = { "erb-formatter", "erb-lint" } }
{
"williamboman/mason.nvim",
opts = { ensure_installed = { "erb-formatter", "erb-lint" } },
}
nvim-dap-ruby
- Options
- Full Spec
opts = {}
{
"suketa/nvim-dap-ruby",
config = function()
require("dap-ruby").setup()
end,
}
neotest-rspec
- Options
- Full Spec
opts = nil
{
"olimorris/neotest-rspec",
}
nvim-dap (optional)
- Options
- Full Spec
opts = nil
{
"mfussenegger/nvim-dap",
optional = true,
dependencies = {
"suketa/nvim-dap-ruby",
config = function()
require("dap-ruby").setup()
end,
},
}
conform.nvim (optional)
- Options
- Full Spec
opts = {
formatters_by_ft = {
ruby = { formatter },
eruby = { "erb_format" },
},
}
{
"stevearc/conform.nvim",
optional = true,
opts = {
formatters_by_ft = {
ruby = { formatter },
eruby = { "erb_format" },
},
},
}
neotest (optional)
- Options
- Full Spec
opts = {
adapters = {
["neotest-rspec"] = {
-- NOTE: By default neotest-rspec uses the system wide rspec gem instead of the one through bundler
-- rspec_cmd = function()
-- return vim.tbl_flatten({
-- "bundle",
-- "exec",
-- "rspec",
-- })
-- end,
},
},
}
{
"nvim-neotest/neotest",
optional = true,
dependencies = {
"olimorris/neotest-rspec",
},
opts = {
adapters = {
["neotest-rspec"] = {
-- NOTE: By default neotest-rspec uses the system wide rspec gem instead of the one through bundler
-- rspec_cmd = function()
-- return vim.tbl_flatten({
-- "bundle",
-- "exec",
-- "rspec",
-- })
-- end,
},
},
},
}