Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

Rubyでのデータの検査

ほとんどの例外は、予期しないデータが他の方法で正常に機能するメソッドに渡されることによって発生するため、アプリケーションを介してデータの一部をトレースし、エラーの原因を見つけることが役立つ場合がよくあります。この記事では、RubyおよびRailsアプリケーションでのデータの検査について説明します。

プット #inspect およびp

Rubyのputs メソッドは、コンソールにメッセージを出力するために使用されます。

unknown = "This is a string"
puts unknown

上記のスクリプトを実行すると、値が出力され、中身を確認できます。

$ ruby puts.rb
This is a string

ただし、 unknown 変数は空の文字列、 nilを保持します 値または空のハッシュ、 puts 空の行を印刷します。これを使用すると、正確な値を確認できなくなり、たとえば、空のハッシュと文字列を区別できなくなります。

$ ruby puts_empty_string.rb

幸いなことに、inspectという名前のインスタンスメソッドがあります。これは、遭遇するすべてのオブジェクトに実装されています。オブジェクトの文字列表現を返します。

unknown = ""
puts unknown.inspect

空の文字列の場合は引用符のペアを返し、配列の場合は角かっこのペアを返します。

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

putsの組み合わせから およびinspect 頻繁に使用されるため、 pと呼ばれる両方を一度に実行するショートカットがあります。 。まったく同じことをしますが、入力する方が速いです。

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

Railsビューでのデータの検査

pがありますが ショートカット、 inspectについて知っておくと便利です なしのオブジェクトの文字列表現が必要な場合のメソッド コンソールに印刷します。

たとえば、Railsビューでは、ログで値を見つけるよりも、結果のHTMLページに値を出力する方が便利な場合があります。

<%= params.inspect %>

より複雑なデータ構造を検査する場合、検査された値が1行に出力されるため、探しているデータを見つけるのが難しい場合があります。

Railsはdebugを提供します これを回避するためのヘルパー。値を検査するだけでなく、オブジェクトを人間が読めるYAML表現に変換し、

<%= debug params %>

debug ヘルパーは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
...

"puts"-デバッグ

PryライブラリやRuby独自のデバッガーなど、アプリケーション内のデータを検査する方法は他にもあります。データを検査する他の方法を確認することは確かに良い考えですが、コンソールにログを書き込んだり、ビューにデータを表示したりすることが、何が起こっているかを知る最も簡単な方法であることがよくあります。

この記事がどのように気に入ったか、質問がある場合、次に何を読みたいかをお知らせください。@AppSignalまでお知らせください。


  1. Ruby開発者向けのデータ構造の概要

    データ構造とは何ですか? データ構造は、データを整理してアクセスするための特定の方法です。 。 例: 配列 二分木 ハッシュ さまざまなデータ構造がさまざまなタスクに優れています。 たとえば、辞書(単語と定義)や電話帳(人の名前と番号)のようなデータを保存する場合は、ハッシュが最適です。 利用可能なデータ構造を知る 、およびそれぞれの特徴 、より優れたRuby開発者になります。 それがこの記事で学ぶことです! 配列について 配列は、プログラミングについて読み始めたときに最初に学習するデータ構造です。 配列は、オブジェクトがギャップなしで次々に格納される連続したメモリのチャン

  2. Ruby2.6の9つの新機能

    Rubyの新しいバージョンには、新しい機能とパフォーマンスの改善が含まれています。 変更についていきますか? 見てみましょう! 無限の範囲 Ruby 2.5以前のバージョンは、すでに1つの形式の無限範囲をサポートしています( Float ::INFINITY を使用) )、しかしRuby2.6はこれを次のレベルに引き上げます。 新しい無限の範囲 次のようになります: (1..) これは、(1..10)のような終了値がないため、通常の範囲とは異なります。 。 使用例 : [a, b, c].zip(1..) # [[a, 1], [b, 2], [c, 3]] [1,2,3,