rubyvisual-studio-code

Navigate to Ruby function definition in VS Code


I'm pretty new to Visual Studio Code, and I'm trying to edit some Ruby code. I installed Ruby support, and I enabled the language server, but Ctrl-clicking on a function name doesn't work, and neither does F12. Both of these features work fine for Python code.

How can I navigate from a function call to its definition in Ruby code?

Here's the Ruby code I tried:

def foo
    puts "In foo."
end

foo()

Here are my settings:

{
    "explorer.confirmDelete": false,
    "explorer.confirmDragAndDrop": false,
    "terminal.integrated.fontSize": 15,
    "git.confirmSync": false,
    "ruby.useLanguageServer": true,
    "editor.rulers": [80, 120]
}

Here's the Python code that works fine:

def foo():
    print('In foo.')


foo()

Solution

  • Thanks to Chris's suggestion, I got a better error message. Following that lead, I found that Ruby's code navigation seems to require a second language server: solargraph. I don't know if you require both, but I can now navigate to Ruby definitions. I also have to autocomplete working.

    Update [2022]

    Coming back to this with VSCode 1.67.0 on Ubuntu 22.04, I no longer require solargraph. However, I did struggle a bit to figure out the exact steps to get it working:

    1. Open File: Preferences: Extensions.

    2. Search for Ruby by Peng Lv, and install it.

    3. Open File: Preferences: Settings.

    4. Click the button in the top right to open the JSON settings file: enter image description here

    5. Add these settings:

      {
          "ruby.useLanguageServer": true,
          "ruby.intellisense": "rubyLocate"
      }
      
    6. Restart VSCode.