🚀 在 VS Code 中

Visual Studio Code 中的 Ruby

Ruby 是一種動態、開放原始碼的程式語言,以其簡潔性和生產力而聞名。Ruby 哲學的一部分是透過其具表現力且優雅的語法,讓開發人員感到愉悅。它經常被用於使用各種不同框架的 Web 開發和腳本編寫,以便在建構原型時進行快速迭代。

本主題詳細介紹如何在 Visual Studio Code 中設定和使用 Ruby,以及 Ruby LSP 擴充功能。

Ruby extension banner

安裝

透過版本管理員安裝 Ruby

雖然某些作業系統 (例如 macOS 和某些 Linux 發行版本) 預設已安裝 Ruby,但我們建議使用版本管理員 (例如 rbenv),以便在 Windows、macOS 和 Linux 上存取較新版本的 Ruby。請遵循您平台的 安裝指南

注意:如同在您的電腦上安裝任何新的工具組一樣,您需要確保重新啟動您的終端機/命令提示字元和 VS Code 執行個體,才能在您平台的 PATH 變數中使用更新的工具組位置。

在 VS Code 中安裝 Ruby LSP 擴充功能

您可以透過擴充功能檢視 (⇧⌘X (Windows、Linux Ctrl+Shift+X)) 在 VS Code 內找到並安裝 Ruby LSP 擴充功能,然後搜尋 'Ruby LSP'。

Ruby LSP extension in the Extensions view

我們將在本主題中討論 Ruby LSP 的許多功能,您也可以參考擴充功能的文件存放庫

檢查您的安裝

安裝後,檢查語言狀態項目以查看 Ruby LSP 伺服器的狀態。如果已設定版本管理員,則應顯示您專案的正確 Ruby 版本。伺服器狀態應顯示「啟動中」或「執行中」,而不是「錯誤」。

Ruby LSP language status center

擴充功能會自動產生一個 .ruby-lsp 資料夾,其中包含一個自訂套件組合,其中包含語言伺服器 gem ruby-lsp。應該不需要任何設定。

預設情況下,擴充功能會嘗試自動偵測您正在使用的 Ruby 版本管理員,並相應地使用正確的版本和路徑。如果您想要自訂該行為,請在您的使用者設定中設定下列組態

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

擴充功能會自動嘗試定期更新 ruby-lsp 語言伺服器 gem;如果您想要強制執行此操作,請使用命令選取區 (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 執行Ruby LSP: 更新語言伺服器 gem

如果您有任何問題,請參閱疑難排解以取得後續步驟。

主要功能

導覽和 IntelliSense

Ruby LSP 提供多個與導覽和 IntelliSense 相關的功能,例如跳到定義、hover、工作區符號、文件符號、完成和簽名說明。

若要深入瞭解如何在 VS Code 中快速瀏覽您的原始碼,請查看程式碼導覽

內嵌提示

Ruby LSP 能夠顯示有關程式碼中推斷或隱含值的實用資訊。在以下範例中,您可以看到 StandardError 顯示為在空的 rescue 呼叫中被 rescue 的隱含例外類別。

Ruby program with inlay hints displayed

雖然內嵌提示對於理解您的程式碼很有幫助,但您也可以透過 [編輯器] > [內嵌提示: 已啟用] 設定 (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) 或從命令選取區 (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 或編輯器中的上下文選單執行 [格式化文件] 命令,來格式化您的 Ruby 檔案。

如果您的專案未使用 RuboCop,則 Ruby LSP 將使用 SyntaxTree 格式化檔案。

Linting a Ruby file

您也可以在每次儲存時執行格式化工具 ([編輯器: 儲存時格式化]),以在您工作時自動保持 Ruby 程式碼的正確格式。若要執行此操作,您必須啟用儲存時格式化。

"editor.formatOnSave": true

Ruby LSP 擴充功能也提供一些方便的完成功能,使用輸入時格式化。例如,它會自動繼續註解行,並自動關閉 end 權杖、管道或字串插值大括號。若要使用輸入時格式化,請確保在編輯器中啟用它

"editor.formatOnType": true

快速修正

當程式碼檢查器在您的原始碼中發現錯誤和警告時,Ruby LSP 通常可以提供建議的快速修正 (也稱為程式碼動作),這些修正可透過編輯器中的燈泡 hover 取得。您可以透過 ⌘. (Windows、Linux Ctrl+.) 快速開啟可用的快速修正。

Quick Fixes for linting violations

此外,「程式碼動作 Widget: 包含鄰近的快速修正」是一個預設啟用的設定,它將從 ⌘. (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

後續步驟

這是一個簡短的總覽,展示了 VS Code 中 Ruby LSP 擴充功能的功能。如需更多資訊,請參閱 Ruby LSP 文件中提供的詳細資訊,包括如何調整特定的 VS Code 編輯器組態。

若要隨時掌握 Ruby LSP 擴充功能的最新功能/錯誤修正,請參閱 monorepo 的 [版本] 頁面,其中包含伺服器和 VS Code 擴充功能實作。

如果您有任何問題或功能要求,請隨時將它們記錄在 Ruby LSP 的 GitHub 存放庫中。

如果您想要深入瞭解 VS Code,請試試這些主題