Сделать 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 "в консоли