今日は、Flatiron Schoolでのソフトウェア工学没入型コースの第二週の終わりをマークしています。 カリキュラムは、オブジェクト指向、クラスメソッド、クラスインスタンス、列挙子、配列、ハッシュ、オブジェクト関係の操作など、Rubyの基本的な基礎を把握することに大きく焦点を当ててきました。
私が書いているruby言語のすべてではないにしても、ほとんどはテスト駆動開発(TDD)環境にあります。 私は他の誰かや自分自身によって書かれたRspecテストに合格するコードを書いています。 私が第二週の終わりに近づいたときに私に夜が明けた現実は、Rspecと有益なエラーメッセージの可用性を仮定することはできないということです。 そのため、私は執筆と私の相棒としてPryで私自身のテストに合格することでより深い楽しみを見つけました。
すべての宝石のこの宝石(はい、gem install needed、punも意図しています)は、デバッグ、テスト、そしてコードに古き良きスヌープを持つための不可欠なツールです。
だから、Pryは何ですか?IRB(Interactive Ruby)と同じように、PryはREPL(Read,Evaluate,Print,Loop)の一種です。 IRBを介してコーディングする代わりに、プログラム内で直接コード化してバインディングを入れることができるので、素晴らしいことです。プログラムを評価するためにコード内の任意の場所をこじ開けます。
あなたのコードにpry’は、その挿入の時点であなたのプログラムをフリーズします。 プログラムがpryにヒットすると、プログラムはREPLを開き、コードをpryして、内部で何が起こっているのかを見る機会が得られます。
使用するには、まずPry gemをインストールします
コマンドラインで”gem install pry”を実行します。
Pry
を使用して、クラスとインスタンスメソッドを含むパーティクラスの例を作成しました。
私は個人的に”バインディング”を使用します。pry”二つの一般的なインスタンスでは、もちろん、あなたがPryを使用する他の多くの状況があります。
インスタンス1:メソッドに渡された引数の値を詮索する。
みたいに、19行目の”機会”って何なんだろう?
私は”バインディングを入れました。私はこの特定の方法に詮索することができるように、一番下に”詮索する”。 注”バインディング。私がif/else文の中に入れた場合、”pry”は機能しないので、条件文が終了した後にpryが置かれました。
今、私は私のプログラムで”music”メソッドを呼び出し、端末で私のファイルを実 端末に「occasion」と入力することで、19行目の「occasion」の値が何であるかをテストできます。
こんにちは、”誕生日”! 私たちはそれが誕生日であることを知っているので、一度実行すると、このメソッドは”Happy Birthday to you、Happy Birthday to you”を返すことを保証することができます。 甘い!
インスタンスTwo:列挙可能なメソッドへの詮索
以下の例では、クラスメソッド”all_party_types”は、すべてのパーティーの機会のタイプを収集し、パーティークラスで作成されたすべての機会の配列を返します。
pryは素晴らしいデバッグツールなので、私たちが望むほとんどすべての値を調べることができます。 たとえば、”Party”の中にあるもの。すべて”(行31)、または”パーティー”(行31)または”パーティー。機会”(32行目)? それは私達に私達が期待するデータを与えるか。
詮索したいものを入力すると、REPLはそれが何であるかを正確に印刷します。 以下、、を参照。 なお、”アイテム”と”アイテム。occasion”は”Party”のインスタンスのみを表示しますが、コマンドラインで”exit”を押してそれらのコマンドを再実行すると、REPLはループ内の次のインスタンスを出力し、配列内の次の値を表示します。
Pry Tips
チームワークは夢の仕事を作るので、ここではPryを使用する上で私のトップ四つのヒントがあります。
- Requireその後、pryしようとする前にメソッドを呼び出します
ファイルの先頭に”require’pry'”が必要で、”binding”の前に最初にメソッドを呼び出す必要があります。pry”が動作します。
2. ループへの詮索(“exit”)
“exit”を使用して、次のループの戻り値に詮索することができます。
例えば、”Party.all”には”party”の3つのインスタンスの配列が含まれており、コマンドラインに”exit”と入力するとループの次のインスタンスに移動します。 ループの各インスタンスについて、”party”値にアクセスできます。 マジック!
3. ループの外に強制的に終了する(”!!!”/”退出!”/”退出!””)
あなたは周りのすべてのスヌーピングを完了したら、あなたはヒットすることができます”!!!”または”終了!”完全に詮索から抜け出すために。 “終了”せずに”! あなたがループを持つメソッドに詮索していない場合は、”もオプションです。
4. リセットpry(“reload-code”)
コードを変更して外出先でテストできない場合、デバッグのポイントは何ですか?
コードの更新が完了したら、コマンドラインに”reload-code”と入力します。 これにより、プログラムを変更した後に手動でpryを終了してからpryを再入力することなく、新しいプログラムでpryセッションがリセットされます。
だから、それは私からのすべてです。 幸せなデバッグ!