Visual Studio 代码中的 Ruby

Ruby是一种动态的开源编程语言,以其简单性和生产力而闻名。凭借富有表现力和优雅的语法,Ruby 哲学的一部分就是让开发人员感到高兴。它通常用于具有一系列不同框架的 Web 开发以及脚本编写,从而在构建原型时允许快速迭代。

本主题详细介绍了如何在 Visual Studio Code 中设置和使用 Ruby 以及 Ruby LSP扩展。

Ruby 扩展横幅

安装

通过版本管理器安装 Ruby

虽然 Ruby 默认安装在某些操作系统(例如 macOS 和某些 Linux 发行版)上,但我们建议使用版本管理器(例如rbenv),以便能够在 Windows、macOS 和 Linux 上访问较新版本的 Ruby。请遵循适合您的平台的安装指南

注意:与在计算机上安装任何新工具集一样,您需要确保重新启动终端/命令提示符和 VS Code 实例,以使用平台 PATH 变量中更新的工具集位置。

在 VS Code 中安装 Ruby LSP 扩展

您可以通过扩展视图 ( ⇧⌘X (Windows、Linux Ctrl+Shift+X ) ) 并搜索“Ruby LSP”,从 VS Code 中查找并安装 Ruby LSP 扩展。

扩展视图中的 Ruby LSP 扩展

我们将在本主题中讨论许多 Ruby LSP 功能,但您也可以参阅https://github.com/Shopify/vscode-ruby-lsp上的扩展文档。

检查您的安装

安装完成后,查看语言状态项即可查看Ruby LSP服务器的状态。如果版本管理器已配置,它应该显示适合您的项目的 Ruby 版本。服务器状态应显示正在启动或正在运行,但不显示错误。

Ruby LSP 语言状态中心

该扩展会.ruby-lsp自动生成一个文件夹,其中包含包含语言服务器 gem 的自定义捆绑包ruby-lsp。不需要任何配置。

默认情况下,扩展会尝试自动检测您正在使用的 Ruby 版本管理器,并相应地使用正确的版本和路径。如果您想自定义该行为,请在用户设置中设置以下配置:

"rubyLsp.rubyVersionManager": "rbenv"

ruby-lsp该扩展将自动尝试每天更新一次语言服务器 gem;如果您想强制执行此操作,请使用命令面板 ( ⇧⌘P (Windows、Linux Ctrl+Shift+P ) ) 执行Ruby LSP: Update language server gem

如果您有任何问题,请参阅后续步骤的故障排除。

主要特点

符号检测

Ruby LSP 解析源代码,并为大纲窗格、文件面包屑和符号搜索提供符号检测和导航(默认情况下可通过⇧⌘O(Windows、Linux Ctrl+Shift+O访问)。

Ruby 文档符号

要了解有关使用 VS Code 快速浏览源代码的更多信息,请查看代码导航

镶嵌提示

Ruby LSP 能够显示有关代码中推断或隐式值的有用信息。在下面的示例中,您可以看到StandardError显示为在空调用中被拯救的隐式异常类rescue

显示镶嵌提示的 Ruby 程序

虽然嵌入提示有助于理解代码,但您还可以通过编辑器 > 嵌入提示:已启用设置 ( editor.inlayHints.enabled) 禁用该功能,或使用以下命令仅针对 Ruby LSP 禁用该功能:

"rubyLsp.enabledFeatures": {
    "inlayHint": false,
}

代码片段

当您输入 Ruby 文件时,Ruby LSP 可能会建议扩展用于常见 Ruby 操作的代码片段,例如创建新方法、类、块或测试样板。要查看完整列表,请查看 Ruby LSP GitHub 存储库中的片段文件。

语义语法高亮

由于对项目源代码的丰富理解,Ruby LSP 能够使用语义语法突出显示和样式设置。

例如,它可以突出显示:

  • 方法调用一致,不会与局部变量混淆。
  • 局部参数(例如方法、块或 lambda 参数)在它们存在的范围内一致。

Ruby LSP 语义突出显示

注意:此屏幕截图使用的是Ruby 扩展包中包含的 Spinel 主题。主题必须使用 Ruby LSP 显示的信息,以便为 Ruby 文件提供丰富的突出显示。

要使用此功能,编辑器必须启用语义突出显示。

"editor.semanticHighlighting.enabled": true,

语法检查和格式化

默认情况下,Ruby LSP 通过与RuboCop集成提供 linting 和格式化。您可以使用⇧⌥F(Windows Shift+Alt+F、Linux Ctrl+Shift+I或从命令面板运行格式化文档命令( ⇧⌘P(Windows、Linux Ctrl+Shift+P))来格式化 Ruby 文件)或编辑器中的上下文菜单。

如果您的项目不使用 RuboCop,Ruby LSP 将使用SyntaxTree格式化文件。

Linting Ruby 文件

您还可以在每次保存时运行格式化程序(编辑器:保存时格式化),以在您工作时自动保持 Ruby 代码正确格式化。为此,您必须启用保存格式。

"editor.formatOnSave": true

Ruby LSP 扩展还使用类型上的格式提供了一些方便的补全。例如,它将自动继续注释行并自动关闭end标记、管道或字符串插值大括号。要在类型上使用格式,请确保在编辑器中启用它:

"editor.formatOnType": true

快速修复

当 linter 在源代码中发现错误和警告时,Ruby LSP 通常可以提供建议的快速修复(也称为代码操作),可以通过编辑器中的灯泡悬停来获得这些建议。您可以通过 ⌘ 快速打开可用的快速修复(Windows、Linux Ctrl+。

快速修复 linting 违规行为

重构

除了快速修复之外,Ruby LSP 还通过代码操作提供重构选项。例如,只需单击一下即可将 Ruby 表达式提取到局部变量中。

将提取重构为变量

使用 rdbg 进行调试支持

为了在 VS Code 内部提供调试支持,Ruby LSP 需要 VS Code RDBG 扩展才能连接到调试(Ruby 的官方调试器)。

安装调试支持

安装VS Code RDBG扩展。

设置调试配置

要使用调试器,您需要在文件中创建调试配置launch.json。该配置允许您将参数传递给程序、运行预启动任务、设置环境变量等等。

要创建launch.jsonRuby 程序:

  1. 在调试视图 ( ⇧⌘D (Windows、Linux Ctrl+Shift+D ) ) 中,选择创建 launch.json 文件链接。
  2. 这将显示一个包含多种默认启动配置类型的下拉列表。您可以选择第一个选项,但我们将添加更多配置。
  3. 我们现在可以编辑创建的.vscode/launch.json文件以添加更多方式来启动 Ruby 程序进行调试。

例子:

{
  "version": "0.2.0",
  "configurations": [
    // Run all tests in a file using Minitest
    {
      "type": "rdbg",
      "name": "Minitest - current file",
      "request": "launch",
      "script": "-Itest ${file}",
      "askParameters": false
    },
    // If your test runner supports line numbers, such as in Rails,
    // you can add a task like this one to run only the test under the cursor
    {
      "name": "Minitest - current line",
      "type": "rdbg",
      "request": "launch",
      "command": "${workspaceRoot}/bin/rails",
      "script": "test",
      "args": ["${file}:${lineNumber}"],
      "askParameters": false
    },
    // Attach the debugger to an active process (for example, Rails server)
    {
      "type": "rdbg",
      "name": "Attach with rdbg",
      "request": "attach"
    }
  ]
}

添加启动配置后,我们可以通过添加断点并执行启动任务来调试 Ruby 程序。

  1. 打开 Ruby 文件并单击编辑器中的左侧装订线以设置断点。它应该显示为红点。

    编辑器左侧装订线中的红色断点点

  2. 通过在运行和调试下选择所需的任务并单击开始调试按钮(默认键盘快捷键F5)来开始调试。

    调试会话在断点处停止

下一步

本文简要概述了 VS Code 中的 Ruby LSP 扩展功能。有关更多信息,请参阅 Ruby LSP README中提供的详细信息,包括如何调整特定的VS Code 编辑器配置。

要了解 Ruby LSP 扩展的最新功能/错误修复,请参阅语言服务器 gemRuby LSP 扩展的版本页面。

如果您有任何问题或功能请求,请随时将其记录在 Ruby LSP 扩展GitHub 存储库中。

如果您想了解有关 VS Code 的更多信息,请尝试以下主题: