预期行为
在 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 中,上述解决方法应适用于所有受影响的版本,而不影响所有其他版本。(即它应该在所有配置中正常工作)