なるようになるブログ

読書感想文かrailsについてかrubyについてか

rails commit log流し読み(2022/08/09)

2022/08/09分のコミットです。

CHANGELOGへの追加はありませんでした。


Merge pull request #44616 from ghiculescu/preload-all-if-proc

actionview/lib/action_view/renderer/collection_renderer.rbactionview/lib/action_view/renderer/partial_renderer/collection_caching.rbの修正です。

rendercachedオプションにproc + multifetchの処理が指定された場合に、preloadを実行するよう修正しています。

# controller
@posts = Post.preload(:author)

# view
render partial: "test/partial", collection: @post, cached: proc { |post| [post, post.author] }

上記のような処理があった場合に、cache keyの生成処理のSQLがN+1になるのを避ける為。


Improvements to assert_enqueued_email_with (#45752)

actionmailer/lib/action_mailer/test_helper.rbの修正です。

assert_enqueued_email_withでmailerのparametersのチェックが出来るよう修正しています。チェックはparametersだけ、及び、argumentsと合わせてのチェック両方出来るようになっています。

email = UserMailer.with(all: "good").create_invite("me@example.com", "friend@example.com")

assert_enqueued_email_with UserMailer, :create_invite, params: { all: "good" }, args: ["me@example.com", "friend@example.com"] do
  email.deliver_later
end