Заставь Byebug завершить выполнение, не выходя из Pry

Когда я устанавливаю точку останова с помощью Byebug в Rails, я иногда хочу, чтобы она завершилась, но в руководстве по github сказано использовать exit который также выходит из Прай. Typing continue неоднократно может раздражать, если точка останова находится в цикле.

Есть ли способ остановить byebug без выхода из консоли Rails?

10 ответов

При беге byebug под консолью Rails или на сервере Rails я обычно выхожу только путем отладки, нажимая Ctrl+D.

Уловка этого подхода заключается в том, что если вы сделаете это на сервере Rails, то Byebug не остановится и не отладит в следующий раз, когда попадет в byebug Заявление в вашем коде в любом месте. Но это прекрасно работает в консоли Rails.

Пытаться !!!, Он работает на Pry Gem, но не уверен, если это на Byebug.

Если вы хотите выйти из цикла, попробуйте skip.

Он будет работать до следующей точки останова, если она отличается от текущей.

Затем, как только вы выйдете из цикла, вы можете continue.

Ну, это не самое элегантное решение, но оно работает для меня до сих пор.

Если у вас есть базовый контроллер в вашем приложении rails, вы можете добавить аксессор для хранения переменной, говорящей о том, хотите ли вы отладку или нет:

attr_accessor :debugging

Затем добавьте / измените инициализатор, чтобы установить для переменной значение true при каждом запросе (или каждый раз, когда для этого объекта создается экземпляр):

def initialize
  @debugging=true
  super
end

И наконец, всегда используйте вызов byebug с условным выражением везде, где вы хотите:

byebug if debugging

Затем, когда вы находитесь на консоли IRB и хотите выйти из отладчика, но продолжаете выполнять код, вы просто устанавливаете переменную:

@debugging=false; finish

Вы можете даже заключить это в помощник или сделать магию ООП, но это хорошая отправная точка. Приятно то, что если вы повторите запрос, вы снова получите стандартное поведение, если не установите для переменной значение false снова.

Typing finish в консоли выходит byugug, не закрывая консоль pry / rails console / rails server.

Ctrl + D тоже работает.

abort должен прервать выполнение и вернуть вас на сервер или консоль.

Если вы какое-то время были в отладчике, сервер мог бы начать работать намного медленнее. Если это так, используя exit для выхода и из byebug, и из сервера, перезапуск может быть лучшим вариантом.

Зайдите в свой код и удалите byebug и сохраняем, то в терминале buybug пишем continue затем нажмите ввод.

Тадааа, ваше приложение будет продолжено, и вы выйдете из строя, не закрывая приложение.

Пытаться continue или же finish

Источник: https://edgeguides.rubyonrails.org/debugging_rails_applications.html#resuming-execution

(byebug) quit
Really quit? (y/n) y
user ~

Единственный, который у меня пока работает быстро и без проблем.

Удалите "отладчик" из своего кода и введите "конец" в консоли

Другие вопросы по тегам