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 调试器时。我怀疑这是因为我上面提到的任何事情。
是这种情况还是不同的问题?也为任何问题提供解决方案。
找到了版本问题的解决方案。事实证明,如果您通过 GUI 打开 VS Code,那么 VS Code 将使用默认版本的 Ruby。但是,如果您通过进入项目目录然后键入 使用 CLI 打开它code .,它将使用 Gemfile 中指定的版本。
我的猜测是,当您cd进入项目目录时,RVM 会执行 Ruby 版本切换,并且因为 VS Code 使用该切换版本,因为 VS Code 的实例是由进行切换的同一进程创建的。注意:我对 Linux 进程不太了解,所以如果我错了,请随时纠正我。
With rvm you have two choices:
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"
]
}
Run Code Online (Sandbox Code Playgroud)
这两种解决方案都很麻烦,我建议卸载rvm并用于rbenvruby 版本管理。
rbenv您不必指定路径,并且可以直接从 UI 打开工作空间 - 将始终设置正确的 ruby 版本和路径。使用rbenvEven 解决了我之前使用 rubocop 和 Solargraph 扩展时遇到的 vscode 的其他问题。
rvm关于替换为其他好处的有趣文章rbenv:
https://dev.to/krtb/why-and-how-i-replaced-rvm-with-rbenv-23ad
| 归档时间: |
|
| 查看次数: |
2545 次 |
| 最近记录: |