Pryによるデバッグ:A Beginner'S Guide

Flatiron Schoolが提供するpre-bootcampのコースワークを作業している間、私は反復とネストされたデータ構造内の戻り値のチェックとデバッ そのLearn.co カリキュラムにはPryというツールが導入されましたが、私のコードでそれを実装する方法を理解するのに苦労しました。 それは物事が最終的にクリックしたHashketballの名前で困難な研究室までではありませんでした。 あまりにも長い間ラボを苦労した後、私は最終的にPryのドキュメントを読むことを余儀なくされ、ハッシュ反復を書いてデバッグする能力はすぐに

Rubyプログラムを構築するのに苦労したことがあるなら、Pryはあなたの武器の中で非常に貴重なツールであることを証明することができます。 Pryは、Ruby開発者がプログラムをデバッグし、過去のハードルをプッシュするために使用できる強力なツールです。 他のRuby gemと同様に、Pry gemは、その機能にアクセスするために、環境設定または特定のrubyファイルで必要とされなければなりません。 さらに、宝石の機能と機能を拡張するpry-docやpry-byebugを含むいくつかのPryプラグインがあります。 これらのプラグインは、gemfileで必要とされる別のgemと考えることができます。

Pry gemでプログラムを設定したら、コードを開いてPryでデバッグしている喜びを体験しましょう。 Pryは機能がいっぱい詰まっていますが、次の例では、私が最も有用であると信じているものを強調しています。

REPL(Read,Evaluate,Print,Loop)

PryはRubyの統合IRBシェルを置き換えることができ、IRBのREPL機能に基づいて構築されますいくつかの追加機能を備えています。 IRBとPryの両方を使用すると、端末でRubyコマンドを実行し、端末ですぐに結果を受け取ることができます。 端末にREPL機能を持たせることは、プログラム全体を実行せずにRubyコードをすばやくテストできる非常に便利なツールです。 たとえば、配列を反復処理して、どの値が返されるかを確認したいとします。 配列を入力し、その配列でイテレータを使用して結果を確認するだけです:

IRBとPryの両方がこの単純な反復で同じ値を返しましたが、Pryが端末に出力する方法は少し違って見えることに注意してください。 標準のIRBに対するPryの利点の1つは、構文の強調表示の使用です。 Irb上の端をこじ開けて与える他の特徴は下記のものを含んでいます:

  1. タブ補完

  2. デバッグツール

  3. ドキュメントを表示する機能

ランタイム呼び出し

おそらくPryの最も便利な機能は、プログラムのランタイムをそのトラックで停止する機能です。 Rubyプログラマは、’binding’行を挿入することで、実行時にpryコンソールを呼び出すことができます。彼らはプログラムを停止したい場所を詮索します。 インタプリタがバインディングに当たったとき。pry、PryはコンソールでREPLセッションを開き、変数、戻り値、反復などをテストできます。

以下は、プログラム内のネストされたデータ構造を解剖する際のPryの有用性の例です。 私は最近、GitHub Jobs APIからシードされた求人のデータベースに依存するdev job search CLIの開発に貢献しました。 APIデータはJSONハッシュで構造化され、データベーステーブルにはこれらのネストされたハッシュからの値がシードされました。 次の図は、このプロジェクトのcompaniesテーブルをどのように設定したかを示しています:

データベーステーブルにデータを入力するときは、テーブルに入るレコードが正しいデータで作成されることが重要です。 すべてが期待どおりに機能していることを確認するために、反復値をどのようにチェックすることができますか? 答えは詮索好きです。 バインディングを挿入します。”populating companies”ブロックの終わり近くでpryを使用すると、ランタイムを停止してREPLセッションに入ることによって戻り値を調査できます:

一度結合します。pryがブロックに挿入されると、Pryコンソールを開くためにコードを再度実行する必要があります。 ターミナルでPryコンソールが開くと、companiesデータベーステーブルに入力されているブロック内にあり、変数と戻り値をテストできるようになりました:

今、私たちは”populate companies”ブロックを開いてpriedしているので、それはいくつかの値をチェックする時間です! ‘Job’がpryコンソールに挿入されると、単一のジョブ開始のためのハッシュが画面に印刷されます。 ジョブハッシュには、type、url、company、company_url、location、titleなどのいくつかのキーがあります。 正しい値がデータベースに送信されていることを確認するには、Pryターミナルに次のコマンドを入力します:

反復が期待どおりに機能していると判断したら、バインドします。pryは、私たちのテーブルは、プログラムの次の実行時に移入されます削除することができます!

ドキュメントとソースコードの閲覧

それに直面してみましょう、開発者であることは、あなたがGoogleに大きく依存することを意味します。 私はしばしばRubyのメソッドを研究し、構文を正しく構造化していることを確認するために文書を磨くためにwebに目を向けます。 私はPryはあなたが右のあなたのコンソールでドキュメントを閲覧することを可能にするプラグインを提供していますことをあなたに言った場合はどうなりますか? Pry-doc宝石へようこそ。 Pry-docを使用すると、現在のPryコンソールセッション内でRubyドキュメントを読むことができます。 今例のために。 私はどのように覚えていないとしましょう。findメソッドはハッシュで動作します。 私はコンソールに次のコマンドを入力し、voilàすることができます! Pryコンソールは、そのメソッドのドキュメントをターミナルに出力します:

万歳! 今、あなたは、Googleに頼ることなく、端末内の便利なドキュメントにアクセスすることができます!

便利なPryコマンド

  1. pry-端末でPryコンソールを開きます

  2. 結合。pry-ランタイムを停止し、Pryコンソールを開きます

  3. exit-現在のループを終了します

  4. 出口だ! ———–

  5. プログラム内の現在位置を表示する場所

  6. show-doc-クラスまたはクラスメソッドのドキュメントを表示します)

  7. history-Pryコマンドの履歴を端末に出力します

  8. ls-プログラムの現在のスコープ内の変数とメソッドを出力します

  9. help-使用可能なPryコマンドの現在のリストを表示します

PryはRubyプログラムをデバッグする能力を大幅に向上させ、私が立ち往生しているときに私がいつも目を向けるツールです。 私はあなたがこれらのヒントやトリックが有用であることを願って、あなたが雑草にいるときはいつでも、結合を入れて、覚えています。それを詮索する!



+