无法在 VS Code 中调试 rake 任务

Sam*_*uel 6 debugging ruby-on-rails rake-task visual-studio-code

我正确配置了环境以在 VS Code 中调试 Rails 应用程序。

它适用于调试 Rails Server。当我开始调试时,它会启动服务器并在我标记的断点处停止。

但是,我不知道如何调试本地文件,例如 rake 任务。它甚至运行任务,但不会在断点处停止。

以下是我如何设置我的环境。

Ubuntu running on WSL2.
VSCode running on windows
Run Code Online (Sandbox Code Playgroud)

安装了扩展:

Remote - WSL from Microsoft
Ruby from PengLv
Run Code Online (Sandbox Code Playgroud)

安装的宝石:

gem install ruby-debug-ide
gem install debase
Run Code Online (Sandbox Code Playgroud)

宝石文件:

gem 'ruby-debug-ide'
gem 'debase'`
Run Code Online (Sandbox Code Playgroud)

/.vscode/launch.json 中调试本地文件的配置:

{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Rake fd:test",
      "type": "Ruby",
      "request": "launch",
      "cwd": "${workspaceRoot}",
      "program": "${workspaceRoot}/bin/rake",
      "useBundler": true,
      "args": ["fd:test"]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

Rake 任务本身位于 /lib/taks/fd.rake:

namespace :fd do
  task test: :environment do
    a = 10
    p "teste"
    b = 20
    c = 30
  end
end
Run Code Online (Sandbox Code Playgroud)

正常工作的调试 Rails 服务器的配置(仅供比较)是:

{
  // Use IntelliSense to learn about possible attributes.
  // Hover to view descriptions of existing attributes.
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [

    {
      "name": "Rails server",
      "type": "Ruby",
      "request": "launch",
      "program": "${workspaceRoot}/bin/rails",
      "args": [
        "server"
      ]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

正如我上面所说,它运行任务,但不会在断点处停止。有人可以帮我吗?

Joh*_*n G 2

VS Code 中的Ruby on Rails 调试建议您需要添加pathToBundlerpathToRDebugIDE

\n\n

另外,VS Code 对于 RVM 环境变量并不明智,因此我总是为每个配置配置 env。

\n\n
    \n
  • 注意:gem env将为您提供您的GEM PATHS, 用于设置GEM_HOMEGEM_PATH变量
  • \n
  • 注意:echo $PATH- 只需使用整个路径
  • \n
\n\n

这样做会让你的配置看起来像:

\n\n
{\n  "name": "Rake fd:test",\n  "type": "Ruby",\n  "request": "launch",\n  "cwd": "${workspaceRoot}",\n  "program": "${workspaceRoot}/bin/rake",\n  "useBundler": true,\n  "pathToBundler": "/Users/johng/.rvm/rubies/ruby-2.5.3/bin/bundle",\n  "pathToRDebugIDE": "/Users/johng/.rvm/gems/ruby-2.5.3@gemset253/gems/ruby-debug-ide-0.7.0/bin/rdebug-ide",\n  "args": ["fd:test"],\n  "showDebuggerOutput": true,\n  "env": {\n      "PATH": "/Users/johng/.rvm/gems/ruby-2.5.3@gemset253/bin:/Users/johng/.rvm/gems/ruby-2.5.3@global/bin\xc6\x92/Users/johng/.rvm/rubies/ruby-2.5.3/bin:/Users/johng/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin",\n      "GEM_HOME": "/Users/johng/.rvm/gems/ruby-2.5.3@gemset253",\n      "GEM_PATH": "/Users/johng/.rvm/gems/ruby-2.5.3@gemset253:/Users/johng/.rvm/rubies/ruby-2.5.3/lib/ruby/gems/2.5.0"\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n