Ruby Pry로 루프에서 나가려면 어떻게해야합니까?
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
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
'q'를 누르면 다음과 같이 표시됩니다
[1] pry(#<AlbumsController>)>
유형
exit
이 단어는 그렇지 않은 경우 수행합니다.
control + c
참고 URL : https://stackoverflow.com/questions/8015531/how-do-i-step-out-of-a-loop-with-ruby-pry
'IT story' 카테고리의 다른 글
Swift에서 ViewController를 해제하는 방법? (0) | 2020.05.11 |
---|---|
팬더에서 하나의 열을 제외하고 모든 열을 선택하는 방법은 무엇입니까? (0) | 2020.05.11 |
우분투에 Node.js 설치 (0) | 2020.05.10 |
파이썬리스트 빼기 연산 (0) | 2020.05.10 |
OAuth (Open Authorization) 란 정확히 무엇입니까? (0) | 2020.05.10 |