Ожидаемое поведение

В VS Code (или другой IDE);

  • добавить точку останова в первую строку [app root]/ config/ application.rb; require_relative 'boot'
  • начать отладку.
  • отладчик должен остановиться на точке останова

Фактическое поведение

  • отладчик продолжается без остановки
  • NB. Любая точка останова при запуске приложения Rails не может остановить выполнение.

Заметки;

Глядя на https://github.com/Shopify/bootsnap/issues/93, я считаю, что эта проблема возникает из-за сочетания следующего; - новая функция Ruby 2.5 "Удалить инструкции trace " (https://bugs.ruby-lang.org/issues/14104)- В Rails 5.2 добавлен гем bootsnap

NB: та же проблема возникает в других IDE; - реактивные мозги; 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 (версия 20130-03-29 63029) [x86_64-darwin17]
  • Версия Rails: 5.2.0
  • ruby-debug-ide версия: 0.6.1
  • версия debase: 0.2.2
  • Версия кода VS: 1.22.2 (1.22.2)
  • Операционная система: macOS 10.13.4 (17E199)
  • Аппаратное обеспечение (дополнительно): MacBook Pro (13 дюймов, середина 2012 г.) и MacBook (13 дюймов, середина 2010 г.)

1 ответ1

0

Работа вокруг

  • Отредактируйте [app root]/ 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

NB:

Казалось бы, основная проблема с Ruby будет исправлена в 2.5.2 (ruby/ruby @ b85b10c).

Учитывая, что проблема существовала только в версиях Ruby с 2.5.0 по 2.5.1, описанный выше обходной путь должен работать для всех уязвимых версий и оставлять все остальные версии в покое. (т.е. он должен работать соответствующим образом во всех конфигурациях)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .