Visual Studio Code 中的 Ruby

Ruby 是一种动态的开源编程语言,以其简洁和高效的功能著称。Ruby 拥有富有表现力且优雅的语法,其理念之一是让开发者满意。它常用于各种不同框架的网页开发和脚本编写,使构建原型时能够快速迭代。

本主题详细介绍了如何在Visual Studio Code中使用Ruby,并使用Ruby LSP扩展。

红宝石扩展横幅

安装

通过版本管理器安装 Ruby

虽然 Ruby 默认安装在某些作系统上(如 macOS 和部分 Linux 发行版),但我们建议使用版本管理器访问更新版本的 Ruby,如 macOS 和 Linux 上的 rbenv,以及 Windows 上的 rbenv。请按照您平台的安装指南作。

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

在VS Code中安装Ruby LSP扩展

你可以在 VS Code 中的扩展视图中找到并安装 Ruby LSP 扩展 (⇧⌘X(Windows,Linux Ctrl+Shift+X)并搜索“Ruby LSP”。

扩展视图中的Ruby LSP扩展

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

检查你的安装情况

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

Ruby LSP 语言状态中心

扩展生成.ruby-lsp自动文件夹,包含包含语言服务器宝石的自定义捆绑包红宝石-超速.不需要配置。

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

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

扩展会自动尝试更新红宝石-超速语言服务器宝石定期发布;如果你想强制实现这一点,可以使用命令面板(⇧⌘P(Windows,Linux Ctrl+Shift+P)来执行 Ruby LSP: Update 语言服务器 gem

如果遇到任何问题,请查看故障排除以了解下一步。

主要特色

导航与IntelliSense

Ruby LSP 提供多种导航和 IntelliSense 相关功能,如进入定义、悬停、工作区 符号、文档符号、完成和签名帮助。

想了解如何用 VS Code 快速处理源代码,请访问 Code Navigation

镶嵌提示

Ruby LSP 能够显示关于你代码中推断或隐式值的有用信息。在下面的示例中,你可以看到标准误差被展示为隐含例外类被救出救援叫。

Ruby程序并展示内嵌提示

虽然嵌入提示有助于理解代码,但你也可以通过编辑器> Inlay提示:启用设置禁用该功能 (

editor.inlay提示.enabled
  • 在VS代码中打开
  • 在VS Code Insiders中开放
)或仅在 Ruby LSP 上使用以下方法禁用此功能:

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

语义句法高亮

Ruby LSP 能够使用语义、高亮和样式设计,这得益于其对项目源代码的丰富理解。

例如,它可以高亮:

  • 方法调用保持一致,避免与本地变量混淆。
  • 本地参数(如方法参数、块参数或λ参数)始终在它们存在的作用域内。

Ruby LSP 语义高亮

注意:这张截图使用了Ruby扩展包中包含的Spinel主题。主题必须利用Ruby LSP显示的信息,以便为Ruby文件提供丰富的高亮效果。

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

"editor.semanticHighlighting.enabled": true,

字条与格式化

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

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

对Ruby文件进行粘印

你还可以在每个存档上运行格式化器(编辑器:存档格式化),这样在工作时自动保持Ruby代码格式正确。要做到这一点,你必须在保存时启用格式化。

"editor.formatOnSave": true

Ruby LSP 扩展还提供了一些方便的 format on type 补全功能。例如,它会自动继续评论线和自动关闭结束标记、管道或字符串插值的卷括。要在类型中使用格式,请确保在编辑器中启用:

"editor.formatOnType": true

快速修复

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

棉絮违规的快速修复

此外,代码动作小部件:包含附近的快速修复 (

editor.codeActionWidget.includeNearbyQuickFixes
  • 在VS代码中打开
  • 在VS Code Insiders中开放
)是默认启用的设置,会在⌘的一行内激活最近的快速修复。(Windows,Linux Ctrl+。)(命令IDeditor.action.quickFix),无论你的光标在该行的哪个位置。

该命令会高亮将通过快速修复重构或修复的源代码。正常的代码动作和非修复重构仍可在光标位置激活。

重构

除了快速修复,Ruby LSP 还通过代码动作提供重构选项。例如,它可以一键提取 Ruby 表达式到局部变量中。

重构提取到变量

调试

Ruby LSP 扩展支持使用调试宝石(Ruby 官方调试器)进行调试。或者,开发者也可以 同时安装VS Code RDBG扩展 为了获得调试功能。

以下文档是关于Ruby LSP调试客户端的。请参阅 RDBG 的 README 以获取配置说明。

调试测试

Ruby LSP 在单元测试之上添加了 CodeLens 按钮,允许你在测试资源管理器中运行示例,运行它们 在新终端或启动调试器。对于这些用途,无需配置。

测试运行代码镜头

启动任务调试

要在启动任务中使用调试器,你需要在launch.json档案。配置允许你配置程序执行。

要创建一个launch.json对于Ruby程序:

  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文件,在编辑器中点击左边的下水道来设置断点。它应该显示为红点。

    编辑器左侧排水沟中的红色断点点

  2. 开始调试时,方法是在“运行”和调试“中选择目标任务,然后点击开始调试按钮(默认快捷键 F5)。

    调试会话在断点处停止

下一步

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

想了解Ruby LSP扩展的最新功能和修复,请参见monorepo的发布页面,该页面包含服务器和VS Code扩展的实现。

如果你有任何问题或功能请求,欢迎在 Ruby LSP 的 GitHub 仓库中记录。

如果你想了解更多VS Code,可以尝试以下主题: