如何从Visual Studio代码运行和调试RubyonRails


  • 如何使用内置的Visual Studio代码启动/调试功能启动RubyonRails?

  • 如何修复Debugger terminal error: Process failed: spawn rdebug-ide ENOENT错误?

设置和启动

  1. 安装VS代码Ruby插件⇧+Pctrl+<kbd]⇧>+P在其他位置,并在提示中键入ext install,然后搜索ruby(
  2. 安装一些必需的Ruby宝石
gem install ruby-debug-ide
gem install debase
  1. 在Visual Studio Code中添加启动配置(示例配置如下所示(
{
"name": "Rails server",
"type": "Ruby",
"request": "launch",
"cwd": "${workspaceRoot}",
"program": "${workspaceRoot}/bin/rails",
"env": {
"PATH": "YOUR_PATH_HERE",
"GEM_HOME": "YOUR_GEM_HOME_HERE",
"GEM_PATH": "YOUR_GEM_PATH_HERE",
"RUBY_VERSION": "YOUR_RUBY_VERSION_HERE"
},
"args": [
"server"
]
}

在某些情况下,您可能不需要指定env部分。在其他情况下,您可以使用CLI(即从终端(启动VS Code,在某些系统上,CLI会自动设置正确的环境变量。

  1. 跑步

故障排除

如果你得到以下错误

Debugger terminal error: Process failed: spawn rdebug-ide ENOENT

您的环境变量(env(很可能没有设置,插件找不到必要的二进制文件。

  1. 确保所有gem都已安装,如果使用bundler,请尝试运行bundler install --binstubs
  2. 确保在启动配置中设置了env部分。运行以下shell命令以生成env
printf "n"env": {n  "PATH": "$PATH",n  "GEM_HOME": "$GEM_HOME",n  "GEM_PATH": "$GEM_PATH",n  "RUBY_VERSION": "$RUBY_VERSION"n}nn"

窗口

确保使用path变量的正确拼写(和大写(,即Windows 上的Path


来源

  • https://github.com/rubyide/vscode-ruby/issues/214#issuecomment-393111908
  • https://www.reddit.com/r/vscode/comments/5w1acs/getting_error_debugger_terminal_error_process/
  • 如何在Visual Studio代码的launch.json中扩展$PATH

我花了一天的大部分时间试图解决这个问题。

我最终将launch.json配置剥离为以下内容:

"configurations": [
{
"name": "Rails server",
"type": "Ruby",
"request": "launch",
"cwd": "${workspaceRoot}",
"program": "/Users/mitch/.rvm/gems/ruby-2.3.0@gg_portal/bin/rails",
"args": [
"server"
],
"useBundler": true,
"pathToRDebugIDE": "/Users/mitch/.rvm/gems/ruby-2.3.0@gg_portal/gems/ruby-debug-ide-0.6.1",
"pathToBundler": "/Users/mitch/.rvm/gems/ruby-2.3.0@gg_portal/wrappers/bundle",
"showDebuggerOutput": true
}
]

首先,尤其是当你使用RVM&有不同的宝石集,确保你的路径与正确的宝石集一致。

为我解决问题的是pathToBundler。

which bundle
/Users/mitch/.rvm/gems/ruby-2.3.0@gg_portal/bin/bundle

将路径设置为binstubs-bundler(如上所示(和从/wappers/指向的bundler(如下所示(似乎存在一些不兼容,因此将pathToBundler更改为:

"pathToBundler": "/Users/mitch/.rvm/gems/ruby-2.3.0@gg_portal/wrappers/bundle",

解决了问题。

这里有一种相关的讨论:

https://github.com/rails/rails/issues/31193

其谈论binstub,尽管不是具体地VSCode&调试。

如果您使用的是依赖bash垫片的ruby版本管理器,如rbenv,请尝试从终端启动VS代码。这应该允许VS代码获取rbenv设置的env变量。或者,您可以在launch.json中设置env-var,但这不是一个很容易维护的解决方案。

相关内容

最新更新