Возможно ли заставить Visual Studio Code IDE отлаживать приложения на Rails 5.2 для работы?

373
grumBit

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

В 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 г.)
0

1 ответ на вопрос

0
grumBit

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

  • Отредактируйте [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, описанный выше обходной путь должен работать для всех уязвимых версий и оставлять все остальные версии в покое. (т.е. он должен работать соответствующим образом во всех конфигурациях)