スリ飯屋MaLankaのフリーエンジニアな日々

このブログでは、フリーランス5期目となる自身の実体験から、フリーランスエンジニアになるためのノウハウ、ブログや沖縄移住、スリランカの最新情報について発信します。

【Rails】partialのcollectionをcacheし、有効期限(expires_in)を設定する方法

※記事内に提携先企業のアフィリエイト広告(リンク、バナー等)、Google広告を含む場合があります

【Rails】partialのcollectionをcacheし、有効期限(expires_in)を設定する方法


こんにちは、現役沖縄フリーランスエンジニアのmah(MaLanka)です。


このブログでは、

僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、

ノウハウなどを書いていきます。


今回は、


  • 【Rails】partialのcollectionをcacheし、有効期限(expires_in)を設定する方法


について書いていきます。




【Rails】partialのcollectionをcacheし、有効期限(expires_in)を設定する方法


結論、

下記のような感じになります。

<%= render partial: 'shared/users_info', collection: User.all, cached: true, expires_in: 10.minutes %>


やり方としては、

cache オプションと expires_in オプションを指定するだけなのですが、

生成されるキャッシュのキーについて補足しておきます。




生成されるキャッシュのキーについて


  • shared/users_info.html.erbというパーシャルがあるとします。
<%= render partial: 'shared/users_info', collection: User.all, cached: true, expires_in: 10.minutes %>


これで生成されるキャッシュのキーは下記のような感じになります。

ビューファイルのパス:ビューファイルの更新日時から生成される一意でランダムな32文字/Userインスタンスのidとupdated_atから生成された文字列




キャッシュのキーをカスタマイズする場合


# (例えばの話)Userインスタンスのname属性をキャッシューのキーにしたい場合
# ->(user)には、User.allの中身が引数として渡ってくる
<%= render partial: 'shared/users_info', collection: User.all, cached: ->(user) { user.name }, expires_in: 10.minutes %>


これで生成されるキャッシュのキーは下記のような感じになります。

ビューファイルのパス:ビューファイルの更新日時から生成される一意でランダムな32文字/Userインスタンスのname


以上です。




参考


  • Cached partial collections renderer is broken for cached, expiring partials; doesn't support expires_in

github.com


  • Fix issue with cached partial collections

github.com


  • Ruby on Rails のフラグメントキャッシュのキャッシュキーはどのように決まるか

medium.com


  • コレクションキャッシュでキャッシュのキーをカスタマイズする方法

blog.takeyuweb.co.jp




最後に


下記の表に、

フリーランスエンジニア向けの人気エージェントをまとめてみました。


エージェント選びで悩んでいる方は是非参考にしてみてくださいね★


エージェント 詳細 最高単価/月 設立
フリエン(furien) 評判をチェック 180万円/月 2011年
ギークスジョブ 評判をチェック 180万円/月 2011年
フォスターフリーランス 評判をチェック 230万円/月 1996年
pe-bank(pebank) 評判をチェック 200万円/月 1989年
Midworks(ミッドワークス) 評判をチェック 200万円/月 2013年
レバテックフリーランス 評判をチェック 140万円/月 2005年