簡體   English   中英

RVM 在 VS 代碼調試器中無法正常工作

[英]RVM not working properly in VS Code Debugger

我正在使用 RVM 來管理我工作的 Ruby 版本。 我們有兩個 Rails 存儲庫,一個是桌面版,一個是移動版。 桌面存儲庫使用 Ruby 2.2.4,移動存儲庫使用 2.2.2。

我知道 RVM 具有自動切換 Gemfile 中指定的適當 Ruby 版本的功能(在我們的例子中,這兩個 Gemfile 都指定了)。

現在,當我使用默認終端並運行ruby -v命令時,在各個項目根目錄中,它會顯示相應的版本。 但是當我在 VS 終端中執行相同操作時,它會顯示默認版本,即 2.2.4。

現在我的主要問題是 Rails 調試器給我以下錯誤: Your Ruby version is 2.2.4, but your Gemfile specified 2.2.2 我懷疑這是因為我上面提到的任何事情。

是這種情況還是不同的問題? 還提供任何問題的解決方案。

找到了版本問題的解決方案。 事實證明,如果您通過 GUI 打開 VS Code,那么 VS Code 將使用默認版本的 Ruby。 但是,如果您通過進入項目目錄然后鍵入code .使用 CLI 打開它code . ,它適用於 Gemfile 中指定的版本。

我的猜測是,當您cd進入項目目錄時,RVM 會執行 Ruby 版本切換,因此 VS Code 使用該切換版本,因為 VS Code 的實例是由執行切換的同一進程創建的。 注意:我對 Linux 進程不太了解,所以如果我錯了,請隨時糾正我。

ruby 解釋器的命令路徑有一個設置,默認為“ruby”。 我剛剛進入 vscode,但可能可以對 rvm 命令使用 vscode 變量插值,並將 ruby​​ 解釋器值設置為 rvm 結果。

有人用過https://github.com/netahun/vscode-rvm嗎?

使用rvm您有兩個選擇:

  1. 使用code .從終端打開工作區code . 命令。 這可確保設置適當的路徑。 但是當您從 UI 打開另一個工作區時,將不會設置適當的路徑。
  2. 自己在launch.json設置路徑,如下所示:
{
    "name": "Rails server",
    "type": "Ruby",
    "request": "launch",
    "program": "${workspaceRoot}/bin/rails",
    "env": {
        "PATH": "",
        "GEM_HOME": "",
        "GEM_PATH": "",
        "RUBY_VERSION": "ruby-2.5.3"
    },
    "args": [
        "server"
    ]
}

這兩種解決方案都很麻煩,我推薦的是卸載rvm並改用rbenv進行 ruby​​ 版本管理。

使用rbenv您不必指定路徑,您可以直接從 UI 打開您的工作空間 - 將始終設置正確的 ruby​​ 版本和路徑。 使用rbenv甚至解決了我之前使用 rubocop 和 solargraph 擴展時遇到的 vscode 的其他問題。

關於用rvm替換rvm其他好處的有趣文章: https : rbenv

您可以在終端項目文件夾中鍵入此代碼以獲取確切的“env”配置,然后將結果傳遞到 launch.json

printf "\n\"env\": {\n  \"PATH\": \"$PATH\",\n  \"GEM_HOME\": \"$GEM_HOME\",\n  \"GEM_PATH\": \"$GEM_PATH\",\n  \"RUBY_VERSION\": \"$RUBY_VERSION\"\n}\n\n"

嘗試將此添加到您的啟動配置中:

"cwd": "${workspaceRoot}"

或者在這里查看我的答案: https://stackoverflow.com/a/64597596/12222988

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM