나와 같다면 Rails 콘솔을 많이 사용합니다. 그리고 지금쯤이면 Pry가 그 이후로 Rails 콘솔에서 일어날 수 있는 최선의 일이라는 데 모두 동의하는 것 같습니다....글쎄요.
내장된 몇 가지 정말 멋진 기능으로 일반 IRB에서보다 예외 처리 작업을 훨씬 쉽게 수행할 수 있습니다.
전체 역추적 보기
Pry(또는 해당 문제에 대해 IRB)에서 예외가 발생하면 역추적의 단축 버전이 표시됩니다. 일반적으로 이 정도면 충분하지만 항상 그런 것은 아닙니다.
pry에서 wtf -v 명령을 사용하여 가장 최근 예외의 전체 역추적을 볼 수 있습니다. -v 플래그를 생략하면 축약된 역추적을 얻습니다.
wtf 명령을 사용하여 가장 최근 역추적에 액세스
액세스 예외 데이터
예외에는 종종 흥미로운 데이터가 첨부되어 있습니다. IRB에서 예외가 발생하면 클래스 이름과 오류 메시지만 볼 수 있습니다. 그러나 Pry를 사용하면 실제 예외 개체에 액세스할 수 있습니다. 즉, 필요한 모든 데이터에 접근하여 가져올 수 있습니다.
가장 최근에 발생한 예외를 얻으려면 _ex_
를 사용하세요. 변하기 쉬운. Ruby의 내장 $!
와 달리 변수를 사용하기 위해 구조 블록 내부에 있을 필요는 없습니다.
예 사용 가장 최근의 예외에 접근하기 위한 지역 변수
예외 표시 방법 사용자 지정
엿볼 때 항상 전체 역추적을 보고 싶다고 가정해 봅시다. 기본 예외 처리기를 재정의하여 이를 수행할 수 있습니다.
~/.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에 기록하는 것과 같은 미친 짓을 할 수도 있습니다. :)