-
Ruby の例外処理をマスターする:実践ガイド
AppSignal では、Ruby アプリケーションのエラー追跡を提供しています。そのために、アプリケーションがスローするすべての例外をキャプチャし、例外が発生したときに開発者に通知します。 例外処理を正しく行うのは難しい場合があります。この記事では、その仕組み、不適切な処理によってどのような問題が発生する可能性があるか、例外を適切にレスキューする方法について説明します。 例外のレスキュー Ruby で例外をレスキューすることで、何か問題が発生した瞬間にアプリケーションがクラッシュするのを防ぐことができます。 begin .. rescue の場合 ブロックを使用すると、エラーが発生したと
-
カスタムメトリクスを使用してキャッシュヒットを追跡し、パフォーマンスを向上
AppSignal を使用するアプリを実行しているすべてのサーバーは、サンプルとメトリクスのコレクションを 30 秒ごとに Push API に送信します。 各リクエストには、データがどのアプリから来たかを判断するために使用するキーがあります。そのためには、データベースにクエリを実行して、受信リクエストごとにアプリを見つける必要があります。毎月 300 億件のリクエストがあるため、私たちは AppSignal を高速化するためにクエリの数を減らす方法を常に模索しています。 データベース クラスター上のクエリの数を減らすためにキャッシュを実装しました。データベースからアプリを取得するたびに、
-
システム負荷をマスターする:負荷平均を読み取って解釈する方法
2024 年 2 月 25 日に更新され、スクリーンショットの例と古いリンクが更新されました。 システムの負荷を監視することは、アプリをスムーズに実行し続けるために不可欠です。 AppSignal のホスト メトリクスは、 システムの負荷平均に関する洞察を提供します。 、複数の時間枠にわたってシステムにどれだけの負荷がかかっているかを示します。 top などのツールを使用してこのメトリクスを確認することもできます。 、uptime 、および w : しかし、「負荷平均」とは正確には何を意味し、これらの数値をどのように解釈すればよいのでしょうか?この投稿では、システム負荷を分析し、負荷平均
-
クライアント側キャッシュによる Rails のパフォーマンスの向上:マスター条件付き GET リクエスト
ロシアン ドール キャッシュ以外にも、Rails アプリのパフォーマンスを高速化するテクニックは他にもあります。今回は、Rails の組み込み条件付き GET サポートについて見ていきます。これにより、レンダリングされたページをユーザーのブラウザ キャッシュに保存できるようになります。 👋 キャッシュ以外のパフォーマンスについて詳しく読みたい場合は、Ruby (on Rails) のパフォーマンスについてさらに詳しく書いています。Ruby のパフォーマンス監視チェックリストを確認してください。 Etag ヘッダーと Last-Modified ヘッダー ブラウザが Rails アプリ内の
-
Ruby のループ制御をマスターする:やり直し、再試行、次の説明
retry について話しました。 例外後の再試行について議論するときにキーワードを使用します。あまり知られていないそのバージョン redo 同様に動作しますが、ブロック全体ではなくループの反復を再実行します。 redo キーワード 前回のアカデミー記事で学んだように、retry ブロック内のコードを再試行できます。 この例では、例外を発生させる前に、「Iteration」という単語をコンソールに出力します。 retry を呼び出すレスキュー ブロックが実行されます。 そしてブロックを最初からやり直します。この結果、プログラムは Iteration を無限に出力することになります。 。 r
-
Ruby における明示的なキャストと暗黙的な強制:#to_s と #to_str の説明
型強制とは、オブジェクトの型とその値を別の型に変更することです。たとえば、#to_s を使用して整数を文字列に変更します。 または #to_i を使用して Float を整数に変換します 。おそらくあまり知られていない #to_str と #to_int 一部のオブジェクトが実装するメソッドは一見すると同じことを行いますが、いくつかの違いがあります。 AppSignal アカデミーのこの版では、型キャスト アクターについて簡単に触れながら、Ruby での型の明示的なキャストと暗黙的な強制について詳しく説明します。両方の方法の違いを説明し、それらの使用方法について説明します。 まず、通常、明
-
平均とパーセンタイルを理解する:パフォーマンス指標の初心者向けガイド
パフォーマンスの監視は、アプリケーションを正常に実行するための重要な部分です。 何かのパフォーマンスを伝える最も基本的な方法の 1 つ それは、それが発生するたびに継続時間を測定し、そこから統計を抽出することです。 平均 値の集合の平均値は、何かの動作がどの程度良いか悪いかを確認する良い出発点となります。これは、考慮中のすべての値を合計し、出現回数で割ることによって計算されます。 Ruby では、平均応答時間の計算は次のようになります。 注意 :この例では、除算時により正確な結果を得るために、合計期間の値を Float にキャストしています。それ以外の場合、Ruby は最も近い整数に切
-
インフラストラクチャの可視性の向上:StatsD と AppSignal のスタンドアロン エージェントを使用してあらゆるシステムを監視
アプリケーションを監視するだけでは、システムの全体像を把握するには必ずしも十分とは限りません。多くの場合、サテライト アプリ (またはサポート アプリ) で実行されているサービスは、日常業務に重大な影響を与える可能性があります。データベース サーバーはこのよく知られた例です。バックアップ スクリプトやその他のバックグラウンド ジョブもシステムの速度を低下させる可能性があるため、見落とされることがよくあります。 Node.js 用の AppSignal APM、Ruby APM、Elixir APM は、アプリ自体を自動的にインストルメントします。ただし、AppSignal はデフォルトではこ
-
Rails 7 が公開:主な機能と今後の改善点
Rails 7 はすぐそこまで来ています。確定したリリース日はありませんが、クリスマス前に公開される予定なので、それほど長くはありません。この記事の公開時点での最新バージョンは 7.0.0.rc1 です。 、最初のリリース候補です。Basecamp、HEY、Github、Shopify はすべて実稼働環境で Rails 7 アルファを実行しているため、リリース候補でもかなり安定していることが期待できます。 この投稿では、Rails 7 によってもたらされる新機能と変更点のいくつかを見ていきます。 ノードと Webpack は必要ありません はい、正しく読みました! Rails 7 の Ja
-
Ruby on Rails データベースのパフォーマンスをマスターする:テストと最適化戦略
この記事では、Rails でデータベースのパフォーマンスをテストする方法と、最も一般的なデータベースのパフォーマンスの問題のいくつかを解決する方法を学びます。 Rails アプリケーションを開発する場合、ActiveRecord はデータベースを管理するデフォルトのツールです。 ActiveRecord は、.where などのコマンドを使用してデータをクエリおよび挿入するための簡単かつ高速なインターフェイスを提供します。 、.save 、.create 、.update 。 Rails はこれらのコマンドを SQL クエリに変換する作業を行います。これは良いことですが、場合によってはパフォ
-
データベースの増大を制御:テーブルのサイズを小さく保ち、データの肥大化を回避する戦略
ほとんどの Web アプリケーションは、何らかの種類のデータ ストア (多くの場合、リレーショナル データベース) を使用します。 Web アプリが成功すると、データベースにデータを「溜め込み」始めるのが非常に簡単になることがあります。しかし、データを溜め込むと、データベース テーブル (行数と保存されるデータ サイズの両方) が際限なく増大することになります。 これはある程度まではうまく機能しますが、データの肥大化を防ぐのに非常に役立ちます。あるいは、それを防ぐことができない場合は、成長を適切に管理するために事前にインフラストラクチャの計画を立てることができます。 本題に入る前に、アプリ
-
適切なバックグラウンド ジョブ プロセッサの選択:遅延ジョブと Sidekiq の説明
ほとんどのアプリケーションでは、メーラー、定期的なクリーンアップ、またはユーザーの存在を必要としないその他の時間のかかる操作のためのバックグラウンド ジョブが必要です。 Rails の世界では、いくつかの gem がジョブ キューとバックグラウンド処理をサポートしています。Delayed Job と Sidekiq が最も人気のある 2 つです。 この投稿では、Delayed Job と Sidekiq の相互作用を含め、Delayed Job と Sidekiq について詳しく説明します。 行きましょう! 遅延ジョブの概要 遅延ジョブは Shopify から直接抽出され、テーブルを使
-
Ruby on Rails での並列テスト:リスクと軽減戦略
テストが速すぎるという苦情を聞いたことがありますか?私もそうではありません。 迅速なテストは迅速なフィードバックを意味します。ローカルで実行するか継続的統合パイプラインで実行するかに関係なく、テストが早く終了するほど、障害に早く対応してコードを改善できます。生産性の向上に加えて、テストが遅いと開発者が不機嫌になることはよく知られています。開発者が不機嫌になるのが好きな人はいません。 そうは言っても、超高速のテスト スイートを作成するのは、思ったほど簡単ではありません。幸いなことに、Rails 6 では並列テストと呼ばれるエキサイティングな機能が導入されました。 。簡単に始めることができ、テ
-
Ruby on Rails トランザクションをマスターする:5 つの基本的な設計プラクティス
データの整合性の問題は、Rails 開発者が直面する最も一般的なデータベースの問題の 1 つです。適切な検証が可能になるだけでなく、正しく設計されたトランザクション ブロックにより、データが部分的に作成または更新されないことが保証されます。 ただし、適切に設計されていない場合、トランザクションはアプリケーションに損害を与えたり、データベース全体をダウンさせたりする可能性もあります。 この記事では、トランザクションを操作するための一連の優れたプラクティスを紹介します。ヒントは非常にシンプルですが、トランザクションを完全に防止し、読みやすく、比較的安全にするのに役立ちます。 さあ、飛び込んで
-
ジェネレーターとテンプレートを使用した Rails アプリのブートストラップ
Rails のバッテリーを含むアプローチは、その最大の資産の 1 つです。少なくとも部分的には Rails のジェネレーターのおかげで、アプリケーションを簡単に迅速に起動できるフレームワークは他にありません。 Rails を少しでも使ったことがある人なら、ジェネレーターに出会ったことがあるでしょう。新しいアプリケーションを作成する必要がありますか? rails new を実行します 。多数の新しいモデルとビューをスキャフォールディングする必要がある場合は、rails generate scaffold を実行します。 。迅速に開始したり、ワークフローを合理化したりするために利用できる機能がさ
-
科学者による重要な Ruby on Rails コードのリファクタリング:実証済みのアプローチ
ソフトウェア エンジニアに本番コードの重要な部分をレビューするよう依頼すると、必ずリファクタリングが必要な 3 つの点を指摘するでしょう。では、なぜこれほど多くの悪いコード、脆弱なコード、または誤解されたコードが実稼働環境で実行され続けるのでしょうか? 答えは簡単です。エンジニアはそれに触れるのを恐れているからです。リファクタリング タスクは特定されてバックログに追加されますが、現在のスプリントに反映されることはほとんどありません。 これには多くの理由があります。コードは何年も前にチームを離れたエンジニアによって書かれたものである可能性があり、それを完全に理解している人は誰もいません。また
-
Ruby on Rails でポリモーフィズムをマスターする:実践ガイド
オブジェクト指向プログラム (OOP) の構築に時間を費やしたことがあるなら、おそらくアプリケーションでポリモーフィズムを使用したことがあるか、少なくともその用語を聞いたことがあるでしょう。 これは、科学やコンピューター サイエンスの教科書で目にするであろう種類の単語です。ポリモーフィズムの研究に時間を費やし、その概念を明確に理解せずにアプリケーションに実装したことがあるかもしれません。 この記事では、特に Ruby on Rails におけるポリモーフィズムについての理解を深めることができます。これを達成するために、以下について詳しく説明します。 現実世界でのポリモーフィズムの使用 O
-
フリッパー機能フラグを使用して新しい機能を Rails に安全にデプロイする
このシナリオを想像してみてください。あなたは Rails 開発者で、誰もが待ち望んでいる素晴らしい機能の開発にここ数日を費やしました。大きくて複雑ですが、厳格なテストを通過しているため、すべてが正常に動作することに自信があります。守らなければならない期限があるので、デプロイします。すぐに、すべての地獄が解き放たれます。 あなたの機能は、一部のユーザーにとってアプリ全体を破壊します。理由を言うのは難しいです。テスト中にバグは発生しませんでした。変更を元に戻しましたが、ダメージを受けています。顧客は満足していないため、ダメージ コントロールと何が問題だったのかの調査に当面の時間を費やすことになり
-
Ruby でステート マシンをマスターする:実践ガイド
ステートマシンは何かのすべての可能な状態を保持できます。 たとえば、ドアのステート マシンには 2 つの状態 (open) のみが含まれます。 および closed )、トランジションは 2 つだけ (opening) と closing ). 一方、複雑なステート マシンには、それらの間で何百もの遷移があるいくつかの異なる状態を持つことができます。実際、周りを見渡すと、ウェブサイトから買い物をするとき、自動販売機でポテトチップスのパックを買うとき、または単に ATM からお金を引き出すときでも、有限のステート マシンが周囲にあることに気づくでしょう。 この投稿では、Ruby でステート
-
Hotwire を使用してインタラクティブな Rails アプリをすばやく構築する:初心者ガイド
Hotwire は現在、すべての Rails 開発者にとってホットなトピックです。Rails を使用している場合は、すでに Hotwire についてよく聞いたことがあるでしょう。 Hotwire は、わずかなコード行でアプリにインタラクティブ性を追加するまったく新しい方法で、HTML を有線で送信することで非常に高速に動作します。つまり、ほとんどのシングル ページ アプリケーション (SPA) フレームワークから手を汚さずに済みます。また、ページの読み込み時間の短縮と対話性を維持しながら、レンダリング ロジックをサーバー上で集中管理することもできます。 この記事では、Hotwire の主な