尝试以扩展 VS Code 中的代理模式!

在 Visual Studio Code 中使用 Ruby

Ruby 是一种动态的开源编程语言,以其简单性和高生产力而闻名。Ruby 哲学的一部分是,通过其富有表现力且优雅的语法让开发者感到愉快。它经常与一系列不同的框架一起用于 Web 开发,也用于编写脚本,从而在构建原型时能够快速迭代。

本主题将详细介绍如何在 Visual Studio Code 中通过 Ruby LSP 扩展来设置和使用 Ruby。

Ruby extension banner

安装

通过版本管理器安装 Ruby

虽然某些操作系统(如 macOS 和一些 Linux 发行版)默认安装了 Ruby,但我们建议使用版本管理器来安装更新版本的 Ruby,例如在 macOS 和 Linux 上使用 rbenv,在 Windows 上使用 rbenv。请遵循您平台的安装指南进行操作。

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

在 VS Code 中安装 Ruby LSP 扩展

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

Ruby LSP extension in the Extensions view

我们将在本主题中讨论 Ruby LSP 的许多功能,但您也可以参考该扩展的文档仓库

检查您的安装

安装后,检查状态栏中的语言状态项,以查看 Ruby LSP 服务器的状态。如果版本管理器已配置好,它应该会显示您项目正确的 Ruby 版本。服务器状态应显示为“正在启动”或“正在运行”,而不是“错误”。

Ruby LSP language status center

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

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

{
  "rubyLsp.rubyVersionManager": {
    "identifier": "rbenv"
  }
}

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

如果您遇到任何问题,请参阅故障排除以获取后续步骤。

主要功能

导航和 IntelliSense

Ruby LSP 提供了多种与导航和 IntelliSense 相关的功能,例如“转到定义”、“悬停提示”、“工作区符号”、“文档符号”、“自动补全”和“签名帮助”。

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

内联提示

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

Ruby program with inlay hints displayed

虽然嵌入提示有助于理解您的代码,但您也可以通过 Editor > Inlay Hints: Enabled 设置 (editor.inlayHints.enabled) 禁用此功能,或使用以下设置仅为 Ruby LSP 禁用此功能

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

语义语法高亮

由于对项目源代码有丰富的理解,Ruby LSP 能够使用语义语法高亮和样式。

例如,它可以高亮显示

  • 方法调用,而不会将其与局部变量混淆。
  • 局部参数(例如方法、块或 lambda 参数)在其存在的作用域内保持一致。

Ruby LSP semantic highlighting

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

要使用此功能,编辑器必须启用语义高亮。

"editor.semanticHighlighting.enabled": true,

代码检查和格式化

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

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

Linting a Ruby file

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

"editor.formatOnSave": true

Ruby LSP 扩展还通过“键入时格式化”功能提供了一些方便的补全。例如,它会自动续写注释行,并自动关闭 end 标记、管道符或字符串插值的大括号。要使用“键入时格式化”,请确保在编辑器中通过以下设置启用了它

"editor.formatOnType": true

快速修复

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

Quick Fixes for linting violations

此外,Code Action Widget: Include Nearby Quick Fixes (editor.codeActionWidget.includeNearbyQuickFixes) 是一个默认启用的设置,它会从 ⌘. (Windows、Linux Ctrl+.) (命令 ID editor.action.quickFix) 激活一行中最近的快速修复,无论您的光标在该行的哪个位置。

该命令会突出显示将通过快速修复进行重构或修复的源代码。普通代码操作和非修复重构仍可在光标位置激活。

重构

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

Refactor extract to variable

调试

Ruby LSP 扩展支持使用 debug gem(Ruby 的官方调试器)进行调试。或者,开发人员也可以安装 VS Code RDBG 扩展来获得调试功能。

以下文档适用于 Ruby LSP 的调试器客户端。请参阅 RDBG 的 README 以获取有关如何配置它的说明。

调试测试

Ruby LSP 在单元测试的顶部添加了 CodeLens 按钮,使您可以在测试资源管理器中运行示例,在新的终端中运行它们或启动调试器。对于这些用途,无需进行任何配置。

Test running code lenses

通过启动任务进行调试

要通过启动任务使用调试器,您需要在 launch.json 文件中创建调试配置。该配置可让您配置要执行的程序。

为 Ruby 程序创建 launch.json

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

示例

{
  "version": "0.2.0",
  "configurations": [
    // Launch the debugger for any given program. In this case, it will run the current file using Ruby
    {
      "type": "ruby_lsp",
      "name": "Debug",
      "request": "launch",
      "program": "ruby ${file}"
    },
    // Launch the debugger for the current test file
    {
      "type": "ruby_lsp",
      "request": "launch",
      "name": "Debug test file",
      "program": "ruby -Itest ${relativeFile}"
    },
    // Attach the debugger client to an existing Ruby process that has already been launched with the debugger
    // server
    {
      "type": "ruby_lsp",
      "request": "attach",
      "name": "Attach to existing server"
    }
  ]
}

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

  1. 打开一个 Ruby 文件,并在编辑器的左侧边栏中单击以设置断点。它应显示为一个红点。

    Red breakpoint dot in the left gutter of the editor

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

    Debug session stopped at breakpoint

后续步骤

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

要了解 Ruby LSP 扩展的最新功能/错误修复,请参阅 monorepo 的“发布”页面,其中包含服务器和 VS Code 扩展的实现。

如果您有任何问题或功能请求,请随时在 Ruby LSP 的 GitHub 仓库中记录它们。

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