Получить отладку VS Code IDE приложений на Rails 5.2 для работы? - PullRequest
0 голосов
/ 20 сентября 2018

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

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

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

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

  • Отладчик продолжается без остановки
  • NB. Любая точка останова, находящаяся далее в приложении 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;- реактивные мозги;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 Ответ

0 голосов
/ 20 сентября 2018

Обход

  • Редактировать [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

Примечание:

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

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

...