source

어떻게 하면 루비 프라이의 고리에서 벗어날 수 있을까요?

lovecheck 2023. 6. 6. 08:28
반응형

어떻게 하면 루비 프라이의 고리에서 벗어날 수 있을까요?

레일즈 애플리케이션으로 프라이를 사용하고 있습니다.나는 설정binding.pry문제를 디버깅하기 위해 내 모델의 루프 안에 있습니다.예:

(1..100).each do |i|
  binding.pry
  puts i
end

입력할 때quit다음 반복으로 이동하고 다시 중지합니다.입력하지 않아도 되도록 루프에서 벗어날 수 있는 방법이 있습니까?quit100번?

지금은 +를 C사용하고 애플리케이션을 다시 시작하는 방법밖에 없습니다.

프라이를 무조건 종료하려면 다음과 같이 입력합니다.

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프로젝트의 영구적인.매번 자동으로 PRI를 다시 활성화합니다.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

보석 사용하기pry-moves다음을 사용하여 루프에서 벗어날 수 있습니다.f(command 명령어)


예:

    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

한 번만 디버깅하면 되는 경우 오류를 발생시키고 보증을 종료할 수 있습니다.

(1..100).each do |i|
  binding.pry
  raise
  puts i
end

또는 조건:

(1..100).each do |i|
  if i == 50
    binding.pry 
    raise
  end
  puts i
end

언급URL : https://stackoverflow.com/questions/8015531/how-do-i-step-out-of-a-loop-with-ruby-pry

반응형