Rails3.Xでは、cache_fuは使えない感じです。(ちゃんと調べてないですが・・・)
その代わり、Rails.cacheというrailsが用意しているものが使えそうです。
特になにもせずにいきなり使える感じです。
あるキー(any_key)の値をキャッシュからくださいな。なければ"cache_data"を返してついでにキャッシュしておいてね。
というのは、以下のような感じで利用できます。
data = Rails.cache.fetch("any_key", expires_in: 30.minutes) do "cache_data" end
キャッシュをすべてクリアするには以下でOKです。
Rails.cache.clear
Rails.cache.fetchを使っているメソッドをテストする時などはcacheをクリアしておいた方がよいです。
Rails.cacheで利用できる他のメソッドは以下を見てください。
http://api.rubyonrails.org/classes/ActiveSupport/Cache/Store.html
ちなみにRails.cacheは特に何も設定せずに利用できますが、その場合はRails.root/tmpの下にファイルでキャッシュするようです。
キャッシュするならば、memcachedでも利用したいものです。
memcahcedの利用も簡単で、config/environments/production.rbに以下のような感じの設定をすればOKです。
config.cache_store = :mem_cache_store, {:namespace => "MyApp"}
これでlocalhost:11211のmemcachedに専用のnamespaceをMyAppとして利用できるようになります。
namespaceはなくてもよいのですが、memcahedが専用でなく他からも利用されるようだったら設定した方がよいと思います。
memcahedを利用するコトに関して以下が参考になります。
http://www.banana-systems.com/2010/09/rails3_memcached/
cache_fuはnamespaceを勝手にいい感じに扱ってくれて、そうそうキーがかぶることはなさそうだったのですが、Rails.cacheの方は自分で気にしないといけないっぽいです。
0 件のコメント:
コメントを投稿