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.
1640
1640
It causes delays in loading of the page and request can timeout if multiple email are sent.
1641
1641
To overcome this emails can be sent in background process with the help of https://github.com/mperham/sidekiq[sidekiq] gem.
1642
1642
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
+
1643
1677
== Active Support Core Extensions
1644
1678
1645
1679
=== `try!` [[try-bang]]
You can’t perform that action at this time.
0 commit comments