RVM 在 VS Code Debugger 中无法正常工作

rad*_*ary 6 ruby ruby-on-rails visual-studio-code

我正在使用 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对于 Mobile 存储库,每当我尝试使用 VS 调试器时。我怀疑这是因为我上面提到的任何事情。

是这种情况还是不同的问题?也为任何问题提供解决方案。

rad*_*ary 9

找到了版本问题的解决方案。事实证明,如果您通过 GUI 打开 VS Code,那么 VS Code 将使用默认版本的 Ruby。但是,如果您通过进入项目目录然后键入 使用 CLI 打开它code .,它将使用 Gemfile 中指定的版本。

我的猜测是,当您cd进入项目目录时,RVM 会执行 Ruby 版本切换,并且因为 VS Code 使用该切换版本,因为 VS Code 的实例是由进行切换的同一进程创建的。注意:我对 Linux 进程不太了解,所以如果我错了,请随时纠正我。


tom*_*ral 5

With rvm you have two choices:

  1. 使用命令从终端打开工作区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"
    ]
}
Run Code Online (Sandbox Code Playgroud)

这两种解决方案都很麻烦,我建议卸载rvm并用于rbenvruby​​ 版本管理。

rbenv您不必指定路径,并且可以直接从 UI 打开工作空间 - 将始终设置正确的 ruby​​ 版本和路径。使用rbenvEven 解决了我之前使用 rubocop 和 Solargraph 扩展时遇到的 vscode 的其他问题。

rvm关于替换为其他好处的有趣文章rbenvhttps://dev.to/krtb/why-and-how-i-replaced-rvm-with-rbenv-23ad