Ответ 1
Чтобы выйти из Pry безоговорочно, введите
exit-program
Редактировать из @Nick комментарий: Также работает:
!!!
Я использую Pry с моим Rails-приложением. Я установил binding.pry
внутри цикла в моей модели, чтобы попробовать и отладить проблему. Например:
(1..100).each do |i|
binding.pry
puts i
end
Когда я набираю quit
, он переходит к следующей итерации и снова останавливается. Есть ли способ выйти из цикла, поэтому мне не нужно набирать quit
100 раз?
В настоящее время единственный способ узнать, как выйти из него, - это использовать CTRL + C и перезапустить приложение.
Чтобы выйти из Pry безоговорочно, введите
exit-program
Редактировать из @Nick комментарий: Также работает:
!!!
Я использую:
disable-pry
Это приведет к тому, что программа будет запущена, но не позволит продолжить выполнение. Это особенно полезно при отладке консоли.
Чтобы выйти из всего, используйте:
exit!
Это должно игнорировать все существующие привязки.
Тройное восклицание (!!!
) сделает это.
Используйте
disable-pry
Чтобы переименовать, добавьте это в свой контроллер.
ENV['DISABLE_PRY'] = nil
A binding.pry
точно такой же, как точка останова в GDB. Такая точка останова в GDB также будет удалена 100 раз.
Если вы хотите, чтобы binding.pry
ударялся один раз, для первой итерации цикла, используйте условное выражение для binding.pry
следующим образом:
(1..100).each do |i|
binding.pry if i == 1
puts i
end
Затем вы выходите из текущего сеанса, просто набрав exit
.
Основываясь на двух предыдущих ответах выше:
Спасибо вам, ребята! Ваши советы очень помогли мне!
Я просто хочу поделиться простым глупым трюком, который я лично использую, чтобы не беспокоиться о переменной окружения DISABLE_PRY
все время. Добавьте этот обратный вызов в базовый контроллер ApplicationController
вашего проекта навсегда. Он автоматически включит PRY каждый раз, когда вызывается disable-pry
:
# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
before_action :reenable_pry
private
def reenable_pry
ENV['DISABLE_PRY'] = nil
end
end
Используя gem pry-moves
вы можете выйти из цикла с помощью f
(команда finish)
пример:
42: def test
43: 3.times do |i|
=> 44: binding.pry
45: puts i
46: end
47: puts :finish
48: end
[1] pry(main)> f
0
1
2
Frame: 0/1 method
From: playground/sand.rb:47 main
42: def test
43: 3.times do |i|
44: binding.pry
45: puts i
46: end
=> 47: puts :finish
48: end