是否可以使用 Visual Studio Code IDE 调试 Rails 5.2 上的应用程序?

是否可以使用 Visual Studio Code IDE 调试 Rails 5.2 上的应用程序?

预期行为

在 VS Code(或其他 IDE)中;

  • 将断点添加到 [app root]/config/application.rb 的第一行;require_relative 'boot'
  • 开始调试。
  • 调试器应该在断点处停止

实际行为

  • 调试器继续运行而不会停止
  • 注意:Rails 应用程序执行过程中的任何断点都无法停止执行。

笔记;

看着https://github.com/Shopify/bootsnap/issues/93,我相信这个问题的发生是由于以下几个因素的结合; - Ruby 2.5 的新功能“删除trace指令”(https://bugs.ruby-lang.org/issues/14104) - Rails 5.2 包含 bootsnap gem

注意:其他 IDE 也出现了同样的问题;—— Jetbrains; https://youtrack.jetbrains.com/issue/RUBY-20684 -RubyMine;https://github.com/ruby-debug/ruby-debug-ide/issues/139

我的环境

  • vscode-ruby版本:0.18.0
  • Ruby 版本:ruby 2.5.1p57(2018-03-29 修订版 63029)[x86_64-darwin17]
  • Rails 版本:5.2.0
  • ruby-debug-ide 版本:0.6.1
  • 降低版本:0.2.2
  • VS Code 版本:1.22.2(1.22.2)
  • 操作系统:macOS 10.13.4 (17E199)
  • 硬件(可选):MacBook Pro(13 英寸,2012 年中)和 MacBook(13 英寸,2010 年中)

答案1

解决方法

  • 编辑 [应用程序根目录]/config/boot.rb
  • 更换线路;

    require 'bootsnap/setup' # Speed up boot time by caching expensive operations.

  • 和;

    unless ( (('2.5.0'..'2.5.1').include? RUBY_VERSION) && defined?(Debugger) ) require 'bootsnap/setup' # Speed up boot time by caching expensive operations. end

注意:

看来 Ruby 2.5.2 中会修复底层问题(ruby/ruby@b85b10c)。

鉴于该问题仅存在于 Ruby 版本 2.5.0 到 2.5.1 中,上述解决方法应适用于所有受影响的版本,而不影响所有其他版本。(即它应该在所有配置中正常工作)

相关内容