Rubyマジック サマー特集:AppSignal Academy 厳選ベスト記事
子どもの頃、分厚い合冊版の漫画を買って読んだときの、あの魔法のような体験を覚えていますか?この記事がそれと同じくらい忘れられないものになるとまでは言いませんが、ビーチでも、公園でも、のんびりした日曜日の午後でも楽しめる、内容たっぷりの「AppSignal Academy ベストセレクション」をご用意しました。きっとあなたの一日を素敵なものにしてくれるはずです。
それでは、ハンモックで読むのにぴったりな厳選トップ5記事をご紹介します。
Rubyにおけるカスタム例外
Rubyではほぼすべてがオブジェクトであり、エラーもその例外ではありません。……ダジャレでごめんなさい。実際には、独自の例外クラスを定義することで、エラーハンドリングをより明確で柔軟にできるようになります。
実行の保証、失敗時の再試行、例外の再送出
rescue以外にも、Rubyには例外を扱うための仕組みがいくつか用意されています。ensureやretryキーワード、そして例外の再送出(re-raise)を組み合わせれば、一時的な障害にも耐えられる堅牢なWeb APIクライアントを構築できます。
Rubyのredo、retry、nextキーワード
retryに関する記事は、前回のホリデーシーズンに大変好評でした。あまり知られていない姉妹キーワードであるredoも似た働きをしますが、ブロック全体ではなくループの各イテレーションだけをやり直せる点が異なります。使いこなせばループ処理の自由度がぐっと上がりますよ。
ActiveRecordパフォーマンス:N+1クエリというアンチパターン
夏の森にいるリスのように、N+1クエリ問題はどこにでも現れる厄介者……いえ、よくあるパフォーマンス上のアンチパターンです。関連付けの遅延読み込み(lazy loading)が原因で発生することが多く、気づかないうちに大量のSQLが発行されてしまいます。幸い、原因さえわかれば対処は比較的簡単です。
Railsのロシアンドールキャッシング
キャッシュフラグメントをネストするこの手法を使えば、ビューが完全に描画されることはほとんどなくなります。データが変更された場合でも、ページの大部分はキャッシュから直接配信されるため、表示速度を大幅に改善できます。
それでは、楽しいサマーリーディングを!
-
Rubyでのプログラミング言語の構築:パーサー
Githubのフルソース Stoffleプログラミング言語の完全な実装は、GitHubで入手できます。このリファレンス実装には、コードを読みやすくするためのコメントがたくさんあります。バグを見つけたり質問がある場合は、遠慮なく問題を開いてください。 このブログ投稿では、完全にRubyで構築されたおもちゃのプログラミング言語であるStoffleのパーサーを実装します。このプロジェクトの詳細については、このシリーズの最初の部分をご覧ください。 パーサーを最初から作成することで、予期しない洞察と知識が得られました。この経験は個人によって異なると思いますが、この記事を読んだ後は、次の少なくとも
-
【Ruby】デコレータデザインパターンでクラスを変更せずにオブジェクトを拡張する方法
デコレータ(Decorator)デザインパターンとは、どのようなものなのでしょうか? また、このパターンをRubyのプロジェクトではどのように活用すればよいのでしょうか? デコレータデザインパターンを利用すると、クラスそのものを変更することなく、オブジェクトに新しい機能を追加して拡張することができます。 それでは、具体的な例を見ていきましょう! ログ出力とパフォーマンス計測の実装例 この例では、rest-clientのようなGemを使ってHTTPリクエストを送信します。 コードは次のようになります。 require restclient data = RestClient.get(www.