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

環境変数を1行追加するだけでRailsのフラグメントキャッシュを簡単にデバッグする方法

パーシャルキャッシュ(部分テンプレートのキャッシュ)は、あまり手間をかけずにページ表示速度を大幅に改善できる優れた仕組みです。しかし、アソシエーションに touch: true を付け忘れていたり、テンプレートの依存関係が正しく機能していなかったりすると、キャッシュされたパーシャルが更新されないという問題が発生します。

さらに厄介なのは、開発環境では通常キャッシュが無効になっているため、この問題に気づくのがステージング環境、最悪の場合は本番環境になってからだということです。問題をデバッグするには、開発モードでキャッシュを有効にして現象を再現する必要があります。

そのためには、config/environments/development.rb の設定を次のように変更します。

config/environments/development.rb
config.action_controller.perform_caching = true

ただし、この方法には欠点があります。キャッシュの問題をデバッグするたびに設定を書き換える必要があり、しかもコミットする前には必ず元に戻すことを忘れてはいけません。こういう地味な作業は本当に面倒です。そこで私が新しいプロジェクトを始めるときは、代わりに次のような設定にしています。

config/environments/development.rb
config.action_controller.perform_caching = ENV['CACHING'] == 'true'

こうしておけば、キャッシュを有効にしたいときは、Railsサーバーを起動するときに環境変数を渡すだけです。

CACHING=true rails server

逆に、普段どおり rails server とだけ実行すれば、キャッシュは無効のまま起動します。設定ファイルをいじる必要は一切ありません。

このパターンのメリット

この「ハードコードされた設定値を環境変数に置き換える」というパターンは、キャッシュのデバッグ以外にも応用できます。例えば、メール配信のオン・オフやログレベルの変更など、頻繁に切り替えたい設定項目に使うと便利です。

  • 設定ファイルを編集してサーバーを再起動し直す手間がなくなる
  • うっかりデバッグ用の設定をコミットしてしまう事故を防げる
  • チームメンバーごとに異なる環境で柔軟に動作を切り替えられる

設定パラメータを頻繁に調整する機会が増えるほど、この小さな工夫が積み重なって大きな時間の節約になります。ぜひ自分のプロジェクトでも試してみてください。

  1. 学ぶべきRailsスキルが多すぎる?初心者でも迷わない学習の始め方

    Railsコンピテンシーチャートをご覧になったことはありますか? CodeFellowsのBrook Riggio氏が作成したこのチャートには、現代のRails開発者が知っておくべきすべての概念がまとめられています。一度見てみましょう。 恐ろしいでしょう?まるで200本もの触手を持つ怪物が、あなたに襲いかかろうとしているように見えます。 Railsの学習が尻込みしたくなるのも無理はありません。SQLやデプロイメントのような一部の分野は、それだけで独立したキャリアパスになり得ます。アプリケーションアーキテクチャに何年も費やしても、専門家だと実感できないかもしれません。 しかし、このチャートは正

  2. ターミナルコマンド1つでOS Xの通知バナー表示時間を自由に変更する方法

    2年前にOS X Lionがリリースされた際、AppleはMacにプッシュ通知機能を独自のバナーシステムで搭載しました。ご存じのとおり、Macで通知を受け取ると画面の右上にバナーが表示され、約25秒後に自動的に消えます。しかし、「表示時間が長すぎて邪魔だ」と感じるユーザーもいれば、逆に「消えるのが早すぎて読みきれない」と不満を漏らすユーザーも少なくありません。 どちらのタイプの方にとっても朗報です。実は、簡単なターミナルコマンドを使えば、バナーの表示時間を自由にコントロールできます。この記事では、表示時間のカスタマイズ方法と、変更後の動作をテストする方法をわかりやすく解説します。 OS Xの