Rails 애플리케이션에서 Pry를 사용하고 있습니다. 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
답변
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
프로젝트 의 기본 컨트롤러 에 영구적으로 추가하십시오 . disable-pry
호출 될 때마다 PRY를 자동으로 다시 활성화합니다 .
# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
before_action :reenable_pry
private
def reenable_pry
ENV['DISABLE_PRY'] = nil
end
end
