エラーの監視と検出のためのエアブレーキ

Airbrake はエラー監視ソフトウェアであり、私たちのほとんどの開発者は両手を広げて歓迎しています。これは基本的に、本番エラーのログを維持し、正確な URL、発生回数、エラーの原因となったファイルなどをキャプチャし、フォールバックできる完全なスタック トレースを取得することで、本番エラーに対処するのに役立ちます。
それは次のようになります。

上に表示されているのは、解決されたエラー、具体的には AbstractController::ActionNotFound エラーのスナップショットです。
ご覧のとおり、デバッグに必要なすべての情報が美しく分類されています。これはタブの 1 つにすぎず、さらに詳しく調べられる情報があります。

Ruby on Rails アプリケーションの場合、Airbrake gem をバンドルすることで Airbrake を統合できます。このプロセスに続くいくつかの手順は、Gem の GitHub ページに適切にまとめられています。 Airbrake GitHub ページの次のページにアクセスできます。

さて、ここでエラーについて説明します。それらを修正するにはどうすればよいですか?
エラーをミュートすることもできます。そうすれば、Airbrake がエラーを修正するよう大声で叫ぶことはなくなります。このエラーは引き続きエラー リストに表示されるため、都合の良いときに選択できるため、エラーのブラックホールに紛れてしまうことを心配する必要はありません。
ここで重要なのは、それらを解決することです。コードを掘り下げて根本原因を特定し、そのレベルで修正します。

一つ分析してみましょう。
上で見たもの、 AbstractController::ActionNotFound 。これを詳しく見てみましょう。
このエラーをしばらく冷静に考えた後、原因を推測することができました。これはサーバーからの不正なリクエストの結果です。誰かが、その時点で閲覧していたページの URL を編集し、想像上のページにアクセスすることで、アプリケーションを出し抜こうとしていました。この結論に至った方法は、同じことをローカル システム上で再現することでした。ホスト文字列を編集して URL をたどってみたところ、出来上がりました。獣が隠れ場所から出てきました。 Rails から、要求したアクションが存在しないと告げられました。これはユーザーのランダムなアクションの結果であり、ユーザーがどこにアクセスするかを制御できなかったため、実際には制限できないエラーでした。
そのとき、私は「無知は至福である」という慣用句に実際に共感できました <3
そこで、プロジェクト ディレクトリ内の初期化ファイルの 1 つである airbrake.rb ファイルにこの修正を追加しました。
救世主のコードブロックは、

これで完了です!
私が出会ったもう 1 つの美しい点は、SidekiqStatus::Container::StatusNotFound エラーです。

これはデバッグが少し困難でした。チームメイトに迷惑をかけなければならず、かなり長い間頭を悩ませ続けました。
バックグラウンド ジョブは Sidekiq を使用して処理されます。
したがって、Sidekiq は何かのステータスを取得していませんでした。 *咳き込む*程度の時間をかけた後、根本原因にたどり着きました。これは、イベント DOMSubtreeModified (現在は非推奨となっています。参照: DOMSubtreeModified Deprecated ) にバインドされたコードへの Javascript 呼び出しがあったために発生していました。 Sidekiq はステータスを返すためにジョブ ID を必要とし、ジョブ ID を取得する呼び出しは、このバインドされたイベントで囲まれた Javascript 内に書き込まれました。バックグラウンド ジョブが実行されているかどうかに関係なく、ページ内の DOM レベルが変更されるたびにスクリプトが呼び出されていました。これにより、ジョブ ID が nil になることがあり、Sidekiq からのステータスの取得に失敗することがありました。
この問題を修正するには、そのコードを置き換えて、アクションが必要になるたびにメソッドを明示的に呼び出すことでした。これでエラーを処理できましたが、再現してみたところ、何も起こりませんでした。万歳!
これらは私が最近対処した 2 つのエラーであり、今後の参考のために、また同様の問題に直面する可能性のある他の開発者のために文書化する必要があると感じました。それは今のところすべてです。

レールカーマ 技術力と業界に関する深い洞察を組み合わせて、快適で機能的でスケーラブルな Ruby on Rails アプリケーションを作成するスタートアップ企業の完璧なパートナーとして機能します。当社のソリューション重視のアプローチにより、お客様のビジネスはパフォーマンスの面で確実な成果を得ることができます。

それで、何か素晴らしいアイデアはありますか?当社の専門家は、お客様と一緒に、これを成功するアプリに開発する機会を検討したいと考えています。

乾杯!
ニヤンタ


保存

保存

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

jaJapanese