A Neovim plugin for Ruby on Rails development. Zero-config, discoverable, context-aware.
- Neovim 0.9+
- A Rails project
Optional: telescope.nvim, toggleterm.nvim, which-key.nvim
-- lazy.nvim
{
"nxhung2304/rails-tools.nvim",
ft = { "ruby", "eruby" },
config = function()
require("rails-tools").setup()
end,
}Zero-config works out of the box. Override only what you need:
require("rails-tools").setup({
modules = {
rspec = true, -- RSpec runner (default: false)
generators = true, -- Rails generators (default: false)
grape = true, -- Grape API support (default: false)
},
terminal = {
provider = "auto", -- "auto" | "toggleterm" | "native"
direction = "float", -- "float" | "horizontal" | "vertical"
},
keymaps = {
enabled = true,
prefix = "<leader>r",
},
alternate = {
custom_mappings = {
{ pattern = "app/forms/(.+)_form.rb$", target = "spec/forms/%1_form_spec.rb" },
{ pattern = "spec/forms/(.+)_form_spec.rb$", target = "app/forms/%1_form.rb" },
},
},
}):Rails
Opens an interactive menu showing all available actions for the current file context.
| Command | Description |
|---|---|
:Rails |
Open central menu |
:Rails alternate |
Toggle between implementation and spec file |
:Rails find {type} |
Find resources (models, controllers, views, specs, …) |
:Rails routes |
Browse and navigate routes |
:Rails routes! |
Force refresh routes cache |
:Rails console |
Open Rails console |
:Rails runner {code} |
Run a Ruby snippet via rails runner |
:Rails runner |
Open prompt to enter code |
:Rails generate {args} |
Run a Rails generator |
:Rails spec nearest |
Run the spec nearest to cursor |
:Rails spec file |
Run the current spec file |
:Rails spec last |
Re-run the last spec |
:Rails grape routes |
Browse Grape API endpoints |
:Rails doctor |
Diagnose project issues |
Default prefix: <leader>r
| Keymap | Action |
|---|---|
<leader>rr |
:Rails — Open menu |
<leader>ra |
:Rails alternate |
<leader>rf |
:Rails find |
<leader>ro |
:Rails routes |
<leader>rc |
:Rails console |
<leader>rx |
:Rails runner (prompt) |
<leader>rs |
:Rails spec nearest (requires modules.rspec = true) |
<leader>rS |
:Rails spec file (requires modules.rspec = true) |
<leader>rg |
:Rails generate (requires modules.generators = true) |
When telescope.nvim is installed, all pickers automatically use Telescope:
:Telescope rails models
:Telescope rails controllers
:Telescope rails routes
:Telescope rails specsFalls back to vim.ui.select when Telescope is not available.
:checkhealth rails-toolsMIT