參加你附近的 ,瞭解 VS Code 中的 AI 輔助開發。

在 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 on Windows。請遵循您所用平臺的安裝指南進行操作。

注意:與在您的計算機上安裝任何新工具集一樣,您需要重啟您的終端/命令提示符和 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 版本。伺服器狀態應顯示為“starting”或“running”,而不是“error”。

Ruby LSP language status center

該擴充套件會自動生成一個 .ruby-lsp 資料夾,其中包含一個自定義的 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 提供了多種與導航和智慧感知相關的功能,例如“轉到定義”、“懸停提示”、“工作區符號”、“文件符號”、“自動補全”和“簽名幫助”。

要了解更多關於如何使用 VS Code 快速瀏覽原始碼的資訊,請檢視程式碼導航

內聯提示

Ruby LSP 能夠顯示有關程式碼中推斷或隱式值的有用資訊。在下面的示例中,您可以看到在一個空的 rescue 呼叫中,StandardError 被顯示為正在被捕獲的隱式異常類。

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

此外,程式碼操作小元件:包含附近的快速修復 (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 的資訊,請嘗試以下主題: