トップ «前の日記(2013/09/04 (水) ) 最新 次の日記(2013/09/06 (金) )» 編集 RSS feed

HsbtDiary


2013/09/05 (木) [長年日記]

[rails] Rails.cache を使う

Rails でグローバル変数っぽいもの、というか controller と model とでどうしても秘匿情報などをやりとりするのに session とか memcached に繋いで直接ぶち込んでやりとりすると思うけど、Rails.cache というのを使うと Rails 仕組みの中で memcached を透過的に扱えてコード的にも綺麗になる。

使い方は application.rb とか environments/*.rb などで

servers = ["foo.example.lan", "bar.example.lan"]
config.cache_store = :mem_cache_store, *servers

とか設定するだけで終わり。redis_store とか dalli_store もあるのでその辺はよしなにする。後は

Rails.cache.write(:foo, :bar)
Rails.cache.read(:foo)

という感じに使う。ただ、Rails.cache を経由すると保存されるデータは

ActiveSupport::Cache::Entry

のインスタンスになってしまうので、バックエンドのミドルウェアなどと単純にデータのやりとりをしたい、というだけなら

Rails.cache.write(:foo, :bar, :raw => true)

で書き込むとよい。便利。