Hầu hết các trường hợp ngoại lệ là do dữ liệu không mong muốn được chuyển đến các phương thức hoạt động tốt, vì vậy, việc theo dõi một phần dữ liệu thông qua ứng dụng của bạn để tìm nguyên nhân gây ra lỗi thường rất hữu ích. Trong bài viết này, chúng ta sẽ đi kiểm tra dữ liệu trong các ứng dụng Ruby và Rails.
đặt
, #inspect
và p
Ruby's đặt
được sử dụng để in thông báo tới bảng điều khiển.
unknown = "This is a string"
puts unknown
Khi chạy tập lệnh ở trên, giá trị được in ra để cho phép bạn xem những gì bên trong.
$ ruby puts.rb
This is a string
Tuy nhiên, nếu không xác định
biến chứa một chuỗi trống, nil
giá trị hoặc một băm trống, đặt
sẽ in ra một dòng trống. Với điều đó, bạn sẽ không thể thấy giá trị chính xác của nó và bạn sẽ không thể phân biệt giữa các chuỗi băm và chuỗi rỗng, chẳng hạn.
$ ruby puts_empty_string.rb
May mắn thay, có một phương thức phiên bản tên là Kiểm tra, được triển khai trên mọi đối tượng mà bạn sẽ gặp phải. Nó sẽ trả về một biểu diễn chuỗi của đối tượng.
unknown = ""
puts unknown.inspect
Đối với một chuỗi rỗng, nó sẽ trả về một cặp dấu ngoặc kép và đối với một mảng, nó sẽ trả về một cặp dấu ngoặc.
$ ruby inspect_empty_string.rb
""
$ ruby inspect_empty_array.rb
[]
Vì sự kết hợp của đặt
và kiểm tra
được sử dụng thường xuyên, có một phím tắt thực hiện cả hai cùng một lúc, được gọi là p
. Nó thực hiện cùng một việc, nhưng gõ nhanh hơn.
unknown = ""
p unknown # equivalent to `puts unknown.inspect`
Kiểm tra dữ liệu trong chế độ xem Rails
Mặc dù có p
, vẫn hữu ích khi biết về kiểm tra
khi bạn cần biểu diễn chuỗi của một đối tượng không có in nó vào bảng điều khiển.
Ví dụ:trong chế độ xem Rails, đôi khi sẽ hữu ích hơn khi in giá trị vào trang HTML kết quả thay vì phải tìm nó trong nhật ký.
<%= params.inspect %>
Khi kiểm tra các cấu trúc dữ liệu phức tạp hơn, đôi khi rất khó để tìm thấy dữ liệu bạn đang tìm kiếm, vì giá trị đã kiểm tra được in trên một dòng.
Rails cung cấp
Như bạn đã mong đợi, có một phím tắt để in biểu diễn YAML của một đối tượng. Ví dụ trên có thể được gọi một lần bằng cách sử dụng
Có nhiều cách khác để kiểm tra dữ liệu trong các ứng dụng của bạn, chẳng hạn như thư viện Pry và trình gỡ lỗi riêng của Ruby. Mặc dù chắc chắn là một ý tưởng hay khi kiểm tra các phương pháp kiểm tra dữ liệu khác, nhưng việc ghi nhật ký vào bảng điều khiển hoặc hiển thị một phần dữ liệu trong một chế độ xem thường là cách nhanh nhất để tìm hiểu điều gì đang xảy ra.
Chúng tôi muốn biết bạn thích bài viết này như thế nào, nếu bạn có bất kỳ câu hỏi nào về nó và những gì bạn muốn đọc tiếp theo, vì vậy hãy nhớ cho chúng tôi biết tại @AppSignal. debug
người trợ giúp để giải quyết vấn đề này. Thay vì chỉ kiểm tra giá trị, nó sẽ chuyển đổi đối tượng thành biểu diễn YAML có thể đọc được của con người và đặt nó vào
<%= debug params %>
debug
người trợ giúp sử dụng to_yaml
dưới mui xe để lấy biểu diễn YAML, trước khi gói nó trong một
irb(main):004:0* puts Product.first.to_yaml
--- !ruby/object:Product
concise_attributes:
- !ruby/object:ActiveRecord::Attribute::FromDatabase
name: id
value_before_type_cast: 4
- !ruby/object:ActiveRecord::Attribute::FromDatabase
name: title
value_before_type_cast: Title
....
y Product.first
. irb(main):004:0* y Product.first # equivalent to `puts Product.first.to_yaml`
--- !ruby/object:Product
...
"put" -debugging