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

IT実務未経験から約1年、東京でフリーランスのRuby on Railsエンジニアに転職。約2年半、大阪中崎町でスリランカカレーの間借りしてました。フリーランスエンジニアになるためのノウハウ、スリランカの事を発信していきます。

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

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




今すぐ登録したい方へ


このブログから登録の多いエージェントは下記の3つです★

(リンクをクリックすると公式サイトに飛びます)

【ダントツの1番人気】フォスターフリーランス【案件保有数5000件以上。業界25年の超老舗】

【僅差で2位】エミリーエンジニア【4人に1人が初めてのフリーランス】

【惜しくも3位】レバテックフリーランス【業界最大手。素早く手厚いフォローで案件参画】




こんにちは、mahです。


このブログでは、

僕が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




最後に


下記の表に、

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


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





最後までお読み頂きありがとうございました★

もしよかったらTwiiterのフォローもお願いします★