[英]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 結果。
使用rvm
您有兩個選擇:
code .
從終端打開工作區code .
命令。 這可確保設置適當的路徑。 但是當您從 UI 打開另一個工作區時,將不會設置適當的路徑。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.