Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

Pry에서 예외 처리하기

나와 같다면 Rails 콘솔을 많이 사용합니다. 그리고 지금쯤이면 Pry가 그 이후로 Rails 콘솔에서 일어날 수 있는 최선의 일이라는 데 모두 동의하는 것 같습니다....글쎄요.

내장된 몇 가지 정말 멋진 기능으로 일반 IRB에서보다 예외 처리 작업을 훨씬 쉽게 수행할 수 있습니다.

전체 역추적 보기

Pry(또는 해당 문제에 대해 IRB)에서 예외가 발생하면 역추적의 단축 버전이 표시됩니다. 일반적으로 이 정도면 충분하지만 항상 그런 것은 아닙니다.

pry에서 wtf -v 명령을 사용하여 가장 최근 예외의 전체 역추적을 볼 수 있습니다. -v 플래그를 생략하면 축약된 역추적을 얻습니다.

Pry에서 예외 처리하기 wtf 명령을 사용하여 가장 최근 역추적에 액세스

액세스 예외 데이터

예외에는 종종 흥미로운 데이터가 첨부되어 있습니다. IRB에서 예외가 발생하면 클래스 이름과 오류 메시지만 볼 수 있습니다. 그러나 Pry를 사용하면 실제 예외 개체에 액세스할 수 있습니다. 즉, 필요한 모든 데이터에 접근하여 가져올 수 있습니다.

가장 최근에 발생한 예외를 얻으려면 _ex_를 사용하세요. 변하기 쉬운. Ruby의 내장 $!와 달리 변수를 사용하기 위해 구조 블록 내부에 있을 필요는 없습니다.

Pry에서 예외 처리하기 사용 가장 최근의 예외에 접근하기 위한 지역 변수

예외 표시 방법 사용자 지정

엿볼 때 항상 전체 역추적을 보고 싶다고 가정해 봅시다. 기본 예외 처리기를 재정의하여 이를 수행할 수 있습니다.

~/.pryrc를 열고 다음과 같이 만드십시오.

# This code was mostly taken from the default exception handler. 
# You can see it here: https://github.com/pry/pry/blob/master/lib/pry.rb

Pry.config.exception_handler = proc do |output, exception, _|
  if UserError === exception && SyntaxError === exception
      output.puts "SyntaxError: #{exception.message.sub(/.*syntax error, */m, '')}"
  else
    output.puts "#{exception.class}: #{exception.message}"
    output.puts "from #{exception.backtrace}"   
  end
end

모든 Pry 예외를 Honeybadger에 기록하는 것과 같은 미친 짓을 할 수도 있습니다. :)