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

Ruby でカスタム例外をマスターする:エラー処理と可観測性を強化する

例外のカスタマイズは、通常、ソフトウェア開発中には一般的な懸念事項ではありません。ただし、オブザーバビリティ ツールでエラーを検出し、問題を正確かつ迅速に特定できない場合は、例外に関する追加情報と詳細が必要になる場合があります。

この記事では、Ruby で例外をカスタマイズし、エラー情報の不足によって将来発生する可能性のある問題を軽減する方法を説明します。

早速始めてみましょう!

簡単な補足

この投稿は、AppSignal を使用した Ruby でのデバッグへの自然な流れであるため、デバッグの概要とカスタム例外の概要については、最初にこの投稿を読むことをお勧めします。

Ruby で例外をレスキューする方法

Ruby には Exception というクラスがあります。 、エラー処理クラスはそこから継承します。このセクションでは、カスタム例外を作成する前に、Ruby の構造例外フローをよりよく理解します。

Exception Ruby の主要な例外クラスであり、rescue Exception Exception から継承されたすべての例外をキャッチします。 。 Ruby が内部的に使用するすべての例外をキャッチしてしまうため、アプリでこれを使用することはベスト プラクティスではありません。

Ruby で例外をレスキューする最も簡単な方法は、begin ... rescue を作成することです。 以下の例のようなコード ブロック:

 

Exception 以降 すべての例外をキャッチします。より具体的なものを使用してフィルタリングし、必要なエラーのみを取得するようにしてください。一例として、StandardError があります。 クラス。Ruby の内部例外を無視することで、アプリケーション コード エラーに関連する例外をキャッチするために使用される標準レスキュー機能です。

StandardException をキャッチするには 、以下の例を使用できます。

 

または、例外クラスが指定されていない場合、Ruby は StandardException によって処理される例外を返します。 クラス。

 

Ruby でカスタム例外を作成するには、おそらく StandardError を継承するクラスを作成することになります。 。これについては、次のいくつかのセクションで説明します。

例外の詳細を確認し、継承するのに最適な例外を見つけるには、Ruby の例外リストを確認してください。

Ruby 例外への追加情報の追加

関連情報を送信せずに新しい例外を作成しても、問題のデバッグ、つまり問題の特定と修正には効果的に役立ちません。エラーの詳細を追加する必要があります。ここでは、オブジェクトからカスタム例外に情報を渡す方法を見ていきます。

ログに記録したいデータを受信するためだけに、新しいカスタム例外を作成してみましょう。前のセクションで説明したように、カスタム例外は StandardError から継承する必要があります。 .

単純な Rails プロジェクトを使用して、この実装をテストできます。 exceptions という名前の新しいフォルダーを作成します。 app 内 フォルダーと custom_exception.rb というクラス Rails プロジェクト内で。

 

この例外クラスでは、ログに表示する必要があるすべての情報を定義でき、データに 4 つの属性を使用します。

  • 例外を列挙するコード
  • 名前
  • 情報メッセージ
  • Ruby によってすでに提供されている例外に関する内部情報の詳細

次に、begin...rescue を作成します。 CustomException を発生させるブロック そしてパラメータを例外属性に渡します。

 

これは便利そうなので、実装を続行し、このデータを使用して例外ログをカスタマイズしましょう。

Ruby での例外の拡張

例外を拡張すると、カスタマイズをより具体的で再利用可能なレベルに高めることができます。 Ruby にはさまざまなタイプのエラーに対していくつかの例外があるのと同様に、システムでもこの一連のプログラミングに従うことができます。

次に、例外をオーバーライドして、拡張が必要なコンテキストで例外を使用する方法を理解しましょう。

ログ内の情報を見つけるのは骨の折れる作業です。開発者は、エラーや検索とフィルタの方法に関する詳細情報を含めなかったことで自分を責めることがよくあります。これを提供する監視ツールを使用していない場合は、意味のあるデータを含めることで、近い将来に節約できる可能性があります。

プロからのヒント :AppSignal でカスタム例外を設定および追跡する方法については、投稿「AppSignal を使用した Ruby のデバッグ」の「AppSignal を使用した Ruby の例外のデバッグ」に関するセクションを確認してください。

以下の例では、ログ内の例外の表示をカスタマイズします。最初は、これは単にデータを表示するための軽くてきれいな方法だと思うかもしれません。ただし、データ内で使用されているキーワードは、エラーを見つけてアプリケーションを監視している人を助けるための鍵となります。

以下のコードを Gemfile に含めて、colorize gem をプロジェクトに追加します。

 

バンドルを実行して colorize gem をインストールし、Rails アプリケーションを起動します。

 

次に、例外クラスで gem をインポートします。フォーマットされた方法で属性を出力するため、重要なエラーが見やすく、すぐに見つけられます。

 

この視覚的なカスタマイズの結果を確認し、フォーマットとスタイルを作成するためのいくつかのオプションをテストしてください。

Ruby でカスタム例外をマスターする:エラー処理と可観測性を強化する

まとめと次のステップ

この投稿では、ログ内の Ruby 例外をカスタマイズして強調表示する方法について説明しました。他にも多くのカスタマイズが可能ですが、最も重要なことは、アプリケーションに関連する例外を処理することです。また、Rails がすでに行っているように、すべての例外に同じ書式設定スタイルを適用しないでください。

コーディングを楽しんでください!

追記Ruby Magic の投稿を報道後すぐに読みたい場合は、Ruby Magic ニュースレターを購読して、投稿を 1 つも見逃さないようにしてください。

Ruby でカスタム例外をマスターする:エラー処理と可観測性を強化する

ブレナ モンテイロ

ゲスト著者の Brena は、新しい開発者の指導に情熱を注ぐ技術リーダーであり、高パフォーマンスのチームの開発と指導に経験があります。彼女は、スケーラブルな API の構築とクラウド サービス間の統合の経験があり、進化的なアーキテクチャに熱心で、拡張現実 (XR) の見習いです。

Brena Monteiro によるすべての記事


  1. ViewComponentGemの紹介

    Reactに触発されたViewComponentsは、ビューをレンダリングするためのマークアップを構築するために使用されるRubyオブジェクトです。 ViewComponentは、Railsで再利用可能、テスト可能、およびカプセル化されたビューコンポーネントを構築するためのフレームワークです。通常、再利用可能なビューは、パーシャルを使用してRailsで作成され、必要に応じてさまざまなビューでレンダリングされますが、ViewComponent gemの導入により、パーシャルをビューコンポーネントと交換できるため、より多くの利点が得られます。これらの利点について詳しく見ていきましょう。 いつ、なぜ

  2. Rails 8 が公開:主な機能と導入の自由度

    Rails 8 がついに登場し、非常にエキサイティングな方法で物事を揺るがしています。すでに Rails コミュニティで活動している場合は、「PaaS は必要ありません」というキャッチフレーズを聞いたことがあるかもしれません。 これは珍しい (しかし驚くべきことではない) 使命です。このリリースの目的は、完全な機能を備えたサービスとしてのプラットフォーム (PaaS) を必要とせずに、Rails アプリのデプロイを容易にすることです。 プラットフォームは、開発者がコードを実行する基盤となるインフラストラクチャを管理せずに、アプリを Web 上で入手できる方法を提供します。 Heroku、R