File tree Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change @@ -1640,6 +1640,40 @@ Sending emails while generating page response should be avoided.
16401640It causes delays in loading of the page and request can timeout if multiple email are sent.
16411641To overcome this emails can be sent in background process with the help of https://github.com/mperham/sidekiq[sidekiq] gem.
16421642
1643+ === Enqueuing Many Emails at Once [[enqueuing-many-emails]]
1644+
1645+ Prefer enqueuing many emails at once instead of one by one in a loop.
1646+ This can greatly reduce the number of round-trips to the queue datastore.
1647+
1648+ [source,ruby]
1649+ ----
1650+ # bad
1651+ users.each { |user| Notifier.welcome(user).deliver_later }
1652+
1653+ # good
1654+ emails = users.map { |user| Notifier.welcome(user) }
1655+ ActionMailer.deliver_all_later(emails)
1656+ ----
1657+
1658+ == Jobs
1659+
1660+ === Enqueuing Many Jobs at Once [[enqueuing-many-jobs]]
1661+
1662+ Prefer enqueuing many jobs at once instead of one by one in a loop.
1663+ This can greatly reduce the number of round-trips to the queue datastore.
1664+
1665+ [source,ruby]
1666+ ----
1667+ # bad
1668+ ids.each { |id| MyJob.perform_later(id) }
1669+
1670+ # good
1671+ jobs = ids.map { |id| MyJob.new(id) }
1672+ ActiveJob.perform_all_later(jobs)
1673+ ----
1674+
1675+ NOTE: Rails 8.1 or later is required for using `perform_all_later`.
1676+
16431677== Active Support Core Extensions
16441678
16451679=== `try!` [[try-bang]]
You can’t perform that action at this time.
0 commit comments