Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Ruby

Làm chủ Exception Handling trong Pry: Kỹ thuật nâng cao cho Rails Console

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.

Làm chủ Exception Handling trong Pry: Kỹ thuật nâng cao cho Rails Console 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.

Làm chủ Exception Handling trong Pry: Kỹ thuật nâng cao cho Rails Console 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. :)