【问题标题】:How do you run and debug Ruby on Rails from Visual Studio Code?如何从 Visual Studio Code 运行和调试 Ruby on Rails?
【发布时间】:2019-01-14 06:28:21
【问题描述】:
  • 如何使用内置的 Visual Studio Code 启动/调试功能启动 Ruby on Rails?

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

【问题讨论】:

  • 不是很相关,但万一你还没有它,一定要安装Ruby Solargraph,让生活更轻松。 Ruby 的智能感知是最好的选择,实际上让我从 RubyMine 切换(至少对于编写 C 扩展)。如果使用 Ruby 2.4+,如果收到 EventMachine 错误,请阅读说明末尾。
  • @ForeverZer0 - 谢谢,这真的对我有帮助!试图从臃肿的 RubyMine 中切换出来,但还没有完全实现......

标签: ruby-on-rails ruby ruby-on-rails-3 visual-studio-code environment-variables


【解决方案1】:

设置和启动

  1. 在 macOS 或 ctrl 上安装 VS Code Ruby plugin (点击 ++P ++P 在其他地方输入ext install,然后搜索ruby)
  2. 安装一些必需的 Ruby gems
gem install ruby-debug-ide
gem install debase
  1. 在 Visual Studio Code 中添加 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. 确保所有 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}\n\n"

窗口

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


来源

【讨论】:

  • 不确定它在 Rails 上的表现如何,但CodeRunner 也可能用于快速测试运行和调试。
  • @ForeverZer0 - CodeRunner 非常适合脚本和简单的应用程序。不幸的是,它并不能很好地与更复杂的框架一起使用,这些框架像 Rails 一样进行大量路由和渲染......
  • 我对 Rails 的假设也差不多,但对于 sn-ps 等仍然有用。只是抛出一个光荣的提及。 :)
  • 对于所有在 Windows 上遇到此错误的人,尽管在 launch.json 中将 PATH 添加到 ENV,但请注意:stackoverflow.com/a/54993121/717732 - 检查您操作系统上 PATH 的拼写!
  • 刚刚gem install ruby-debug-ide工作
【解决方案2】:

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

我最终将我的 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 捆绑器的路径(如上所示)和从 /wrappers/ 指向的捆绑器(如下所示)方面似乎存在一些不兼容,因此将 pathToBundler 更改为:

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

解决了问题。

这里有一种相关的讨论:

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

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

【讨论】:

  • 谢谢。我还尝试了“~/.rvm/gems....”以便其他用户可以共享,但 VSCode 不喜欢它。
  • 谢谢。大多数答案都需要和缺少“useBundler”。
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 2021-02-09
    • 2016-07-29
    • 2015-07-09
    • 2017-09-14
    • 2023-01-29
    • 1970-01-01
    相关资源
    最近更新 更多