Nếu bạn như tôi, dùng Rails console rất nhiều. Và đến giờ chắc ai cũng đồng ý Pry là điều tốt nhất xảy ra cho Rails console kể từ... luôn.
Built-in trong Pry có vài tính năng cool khiến làm việc với exception dễ dàng hơn IRB thuần túy nhiều.
Xem full backtrace
Khi exception xảy ra trong Pry (hoặc IRB), bạn nhận bản backtrace rút gọn. Thường đủ, nhưng không phải lúc nào cũng vậy.
Trong Pry, xem full backtrace của exception gần nhất bằng lệnh `wtf -v`. Bỏ flag `-v` nhận backtrace rút gọn.
Dùng lệnh wtf truy cập backtrace gần nhất.
Truy cập dữ liệu exception
Exception thường có dữ liệu thú vị gắn kèm. Trong IRB chỉ thấy class name và error message. Nhưng Pry cho truy cập đối tượng exception thực tế. Nghĩa là bạn có thể "móc" ra dữ liệu cần.
Để lấy exception vừa ném, dùng biến `_ex_`. Khác với biến built-in `$!` của Ruby, bạn không cần ở trong rescue block để dùng.
Dùng biến local _ex_ truy cập exception gần nhất.
Tùy chỉnh hiển thị exception
Giả sử luôn muốn xem full backtrace trong Pry? Làm được bằng cách override default exception handler.
Mở `~/.pryrc` làm như sau:
# Code này chủ yếu lấy từ default exception handler.
# Xem tại: 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
Thậm chí có thể làm điều crazy như log tất cả Pry exception lên Honeybadger. :)