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

Ruby에서 데이터 검사

대부분의 예외는 정상적으로 작동하는 메서드에 예상치 못한 데이터가 전달되어 발생하므로 애플리케이션을 통해 데이터를 추적하여 오류의 원인을 찾는 것이 종종 유용합니다. 이 기사에서는 Ruby 및 Rails 애플리케이션에서 데이터를 검사하는 방법을 살펴보겠습니다.

넣기 , #검사p

Ruby의 put 메소드는 콘솔에 메시지를 인쇄하는 데 사용됩니다.

unknown = "This is a string"
puts unknown

위의 스크립트를 실행하면 내부에 무엇이 있는지 볼 수 있도록 값이 출력됩니다.

$ ruby puts.rb
This is a string

그러나 알 수 없음 변수는 빈 문자열, nil을 보유합니다. 값 또는 빈 해시, put 빈 줄을 인쇄합니다. 그렇게 하면 정확한 값을 볼 수 없으며 예를 들어 빈 해시와 문자열을 구별할 수 없습니다.

$ ruby puts_empty_string.rb

운 좋게도 inspect라는 이름의 인스턴스 메서드가 있습니다. 이 메서드는 만나는 모든 개체에 구현됩니다. 개체의 문자열 표현을 반환합니다.

unknown = ""
puts unknown.inspect

빈 문자열의 경우 한 쌍의 따옴표를 반환하고 배열의 경우 한 쌍의 대괄호를 반환합니다.

$ ruby inspect_empty_string.rb
""
$ ruby inspect_empty_array.rb
[]

put의 조합 이후 및 검사 너무 자주 사용되므로 p라고 하는 한 번에 두 가지 작업을 모두 수행하는 바로 가기가 있습니다. . 동일한 작업을 수행하지만 입력하는 것이 더 빠릅니다.

unknown = ""
p unknown # equivalent to `puts unknown.inspect`

Rails 보기에서 데이터 검사

p가 있지만 바로 가기, inspect에 대해 아는 것이 여전히 유용합니다. 없는 객체의 문자열 표현이 필요할 때 메소드 콘솔에 인쇄합니다.

예를 들어 Rails 보기에서는 로그에서 값을 찾을 필요 없이 결과 HTML 페이지에 값을 인쇄하는 것이 더 유용할 때가 있습니다.

<%= params.inspect %>

보다 복잡한 데이터 구조를 검사할 때 검사한 값이 한 줄에 인쇄되기 때문에 원하는 데이터를 찾기 어려울 때가 있습니다.

Rails는 디버그를 제공합니다. 이 문제를 해결하는 도우미. 값을 검사하는 대신 개체를 사람이 읽을 수 있는 YAML 표현으로 변환하고

<%= debug params %>

디버그 도우미는 to_yaml을 사용합니다.

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
  ....

예상대로 개체의 YAML 표현을 인쇄하기 위한 바로 가기도 있습니다. 위의 예는 y Product.first를 사용하여 한 번에 호출할 수 있습니다. .

irb(main):004:0* y Product.first # equivalent to `puts Product.first.to_yaml`
--- !ruby/object:Product
...

"put"-디버깅

Pry 라이브러리 및 Ruby 자체 디버거와 같이 애플리케이션의 데이터를 검사하는 더 많은 방법이 있습니다. 데이터를 검사하는 다른 방법을 확인하는 것도 좋은 생각이지만 콘솔에 로그를 기록하거나 보기에 데이터를 표시하는 것이 종종 무슨 일이 일어나고 있는지 가장 빨리 알아낼 수 있는 방법입니다.

이 기사가 얼마나 마음에 들었는지, 기사에 대해 질문이 있거나 다음에 읽고 싶은 내용이 있으면 @AppSignal로 알려주시기 바랍니다.