如何从Visual Studio Code运行和调试Ruby on Rails?

jan*_*iks 9 ruby ruby-on-rails environment-variables ruby-on-rails-3 visual-studio-code

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

  • 您如何解决该Debugger terminal error: Process failed: spawn rdebug-ide ENOENT错误?

jan*_*iks 9

设置和启动

  1. 安装VS Code Ruby插件 (点击?+ ?+ Pext install在提示符下输入,然后搜索ruby
  2. 安装一些必需的Ruby gem
gem install ruby-debug-ide
gem install debase
Run Code Online (Sandbox Code Playgroud)
  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"
    ]
}
Run Code Online (Sandbox Code Playgroud)

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

  1. 跑!

故障排除

如果出现以下错误

{
    "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"
    ]
}
Run Code Online (Sandbox Code Playgroud)

您的环境变量(env)很可能未设置,插件无法找到所需的二进制文件。

  1. bundler install --binstubs如果使用捆绑程序,请确保已安装所有gem,并尝试运行。
  2. 确保env在启动配置中设置了该部分。运行以下shell命令以生成您的env
Debugger terminal error: Process failed: spawn rdebug-ide ENOENT
Run Code Online (Sandbox Code Playgroud)

资料来源


Mit*_*tch 8

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

我最终将我的 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
    }

]
Run Code Online (Sandbox Code Playgroud)

首先,特别是如果您使用 RVM 并拥有不同的 Gemset,请确保您的路径与正确的 Gemset 一致。

为我解决问题的是 pathToBundler。

which bundle
/Users/mitch/.rvm/gems/ruby-2.3.0@gg_portal/bin/bundle
Run Code Online (Sandbox Code Playgroud)

设置 binstubs 捆绑器的路径(如上所示)和从 /wrappers/ 指向的捆绑器(如下所示)看起来有些不兼容,因此将 pathToBundler 更改为:

"pathToBundler": "/Users/mitch/.rvm/gems/ruby-2.3.0@gg_portal/wrappers/bundle",
Run Code Online (Sandbox Code Playgroud)

解决了这个问题。

这里有一种相关的讨论:

https://github.com/rails/rails/issues/31193
Run Code Online (Sandbox Code Playgroud)

虽然不是专门讨论 VSCode 和调试,但它讨论了 binstubs。