Rails 3 のサイト全体でいくつかのリクエストで再利用される高価なクエリをキャッシュしようとしています。
ユーザーがレポートを表示するためにテーブルをクリックするか、マップを表示するためにクリックするか、ユーザーが何かを印刷するためにクリックすると、次のクエリが実行されます。
reports.where{(time > my{range.begin}) & (time < my{range.end})}
これは、何千ものレコードになる可能性がある高価なクエリです。私はそれをキャッシュしたいので、最初に呼び出された後、クエリ内のレコードの 1 つが変更 (更新など) されるまでキャッシュに保存されます。
クエリを次のように置き換えます。
Rails.cache.fetch('time_reports') { reports.where{(time > my{range.begin}) & (time < my{range.end})} }
ただし、例外が発生します。
TypeError (can't dump anonymous class #<Module:0x007f8f92fbd2f8>):
質問の一部として、Rails.cache.fetch を使用するために config/environments/production.rb に以下を追加する必要があるかどうかを知りたいです。
config.cache_store = :mem_cache_store, "cache-1.example.com", "cache-2.example.com" //obviously I would use my ip