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

问题描述 投票:5回答:2
  • 如何使用内置的Visual Studio代码启动/调试功能启动Ruby on Rails?
  • 你如何修复Debugger terminal error: Process failed: spawn rdebug-ide ENOENT错误?
ruby-on-rails ruby ruby-on-rails-3 visual-studio-code environment-variables
2个回答
6
投票

设置和启动

  1. 安装VS Code Ruby plugin(点击⌘+⇧+ P并在提示符下键入ext install,然后搜索ruby
  2. 安装一些必需的Ruby宝石
gem install ruby-debug-ide
gem install debase
  1. 在Visual Studio代码中添加launch configuration(示例配置如下所示)
{
    "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部分。在其他情况下,您可以启动VS Code using the CLI(即来自终端),在某些系统上会自动设置正确的环境变量。

  1. 跑!

故障排除

如果您收到以下错误

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

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

  1. 确保安装了所有宝石,如果使用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}\n\n"

Sources:


1
投票

我花了大半天时间试图解决这个问题。

我最终将我的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并具有不同的Gemset,请确保您的路径与正确的Gemset一致。

什么解决了我的问题是pathToBundler。

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

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

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

解决了这个问题。

这里有一种相关的讨论:

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

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


0
投票

如果您正在使用依赖于bash shims的ruby版本管理器(如rbenv),请尝试从终端启动VS Code。这应该允许VS Code获取rbenv设置的env变量。或者,您可以在launch.json中设置env变速器,但这不是一个非常易于维护的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.