Сделать Byebug закончить исполнение без выхода Pry

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

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

Ответ 1

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

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

Ответ 2

Попробуйте !!!. Он работает на pry gem, но не уверен, что он делает это на beebug.

Ответ 3

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

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

attr_accessor :debugging

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

def initialize
  @debugging=true
  super
end

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

byebug if debugging

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

@debugging=false; finish

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

Ответ 4

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