让 VS Code IDE 调试 Rails 5.2 上的应用程序正常工作?
Get VS Code IDE debugging of apps on Rails 5.2 to work?
预期行为
在 VS 代码中(或其他 IDE);
- 在[app root]/config/application.rb的第一行添加断点;
require_relative'boot'
- 开始调试。
- 调试器应该在断点处停止
实际行为
- 调试器不停地继续
- 注意:进一步执行 Rails 应用程序的任何断点都无法停止执行。
备注;
查看 https://github.com/Shopify/bootsnap/issues/93,我认为此问题的发生是由于以下原因的组合;
- 新 Ruby 2.5 功能 "Remove trace
instructions" (https://bugs.ruby-lang.org/issues/14104)
- Rails 5.2 包含 bootsnap gem
注意:其他 IDE 也出现了同样的问题;
- 捷脑; https://youtrack.jetbrains.com/issue/RUBY-20684
- Ruby我的; 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-调试-ide版本:0.6.1
- 降级版本:0.2.2
- VS 代码版本:1.22.2 (1.22.2)
- 操作系统:macOS 10.13.4 (17E199)
- 硬件(可选):MacBook Pro(13 英寸,2012 年中)和 MacBook(13 英寸,2010 年中)
解决方法
- 编辑[应用根目录]/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 上,上述解决方法应该适用于所有受影响的版本,而不会影响所有其他版本。 (即它应该在所有配置中都能正常工作)
预期行为
在 VS 代码中(或其他 IDE);
- 在[app root]/config/application.rb的第一行添加断点; require_relative'boot'
- 开始调试。
- 调试器应该在断点处停止
实际行为
- 调试器不停地继续
- 注意:进一步执行 Rails 应用程序的任何断点都无法停止执行。
备注;
查看 https://github.com/Shopify/bootsnap/issues/93,我认为此问题的发生是由于以下原因的组合;
- 新 Ruby 2.5 功能 "Remove trace
instructions" (https://bugs.ruby-lang.org/issues/14104)
- Rails 5.2 包含 bootsnap gem
注意:其他 IDE 也出现了同样的问题; - 捷脑; https://youtrack.jetbrains.com/issue/RUBY-20684 - Ruby我的; 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-调试-ide版本:0.6.1
- 降级版本:0.2.2
- VS 代码版本:1.22.2 (1.22.2)
- 操作系统:macOS 10.13.4 (17E199)
- 硬件(可选):MacBook Pro(13 英寸,2012 年中)和 MacBook(13 英寸,2010 年中)
解决方法
- 编辑[应用根目录]/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 上,上述解决方法应该适用于所有受影响的版本,而不会影响所有其他版本。 (即它应该在所有配置中都能正常工作)