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

时间:2018-12-19 10:49:51

标签: ruby-on-rails ruby visual-studio-code

我正在使用RVM来管理我工作的Ruby版本。我们有两个Rails仓库,一个台式机和一个移动版。桌面仓库使用Ruby 2.2.4,而移动仓库使用2.2.2。

我知道RVM具有自动切换Gemfile中指定的相应Ruby版本(在我们的示例中两个Gemfile中都指定)的功能。

现在,当我使用默认终端并在单个项目根目录中运行ruby -v命令时,它将显示适当的版本。但是,当我在VS终端中执行相同操作时,它会显示默认版本,即2.2.4。

现在,我的主要问题是Rails调试器给我以下错误:每当我尝试使用VS调试器时,都会向移动存储库发送Your Ruby version is 2.2.4, but your Gemfile specified 2.2.2。而且我怀疑这是由于我上面提到的任何原因。

是这种情况还是另外一个问题?还要提供解决问题的方法。

3 个答案:

答案 0 :(得分:1)

ruby​​解释器的命令路径有一个设置,默认为“ ruby​​”。我只是进入vscode,但是可能可以在rvm命令中使用vscode变量插值,并将Ruby解释器值设置为rvm结果。

有人使用过https://github.com/ngetahun/vscode-rvm吗?

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

对于 rvm,您有两个选择:

  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"
    ]
}

这两种解决方案都很麻烦,我推荐的是卸载 rvm 并使用 rbenv 进行 ruby​​ 版本管理。

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

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