method
enqueue_delivery
v6.1.7.7 -
Show latest stable
-
0 notes -
Class: MessageDelivery
- 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0
- 3.0.9
- 3.1.0
- 3.2.1
- 3.2.8
- 3.2.13
- 4.0.2
- 4.1.8
- 4.2.1 (0)
- 4.2.7 (0)
- 4.2.9 (0)
- 5.0.0.1 (0)
- 5.1.7 (0)
- 5.2.3 (0)
- 6.0.0 (0)
- 6.1.3.1 (0)
- 6.1.7.7 (0)
- 7.0.0 (0)
- 7.1.3.2 (0)
- 7.1.3.4 (0)
- What's this?
enqueue_delivery(delivery_method, options = {})
private
Hide source
# File actionmailer/lib/action_mailer/message_delivery.rb, line 132 def enqueue_delivery(delivery_method, options = {}) if processed? ::Kernel.raise "You've accessed the message before asking to " "deliver it later, so you may have made local changes that would " "be silently lost if we enqueued a job to deliver it. Why? Only " "the mailer method *arguments* are passed with the delivery job! " "Do not access the message in any way if you mean to deliver it " "later. Workarounds: 1. don't touch the message before calling " "#deliver_later, 2. only touch the message *within your mailer " "method*, or 3. use a custom Active Job instead of #deliver_later." else job = @mailer_class.delivery_job if use_new_args?(job) job.set(options).perform_later( @mailer_class.name, @action.to_s, delivery_method.to_s, args: @args) elsif job <= DeliveryJob job.set(options).perform_later( @mailer_class.name, @action.to_s, delivery_method.to_s, *@args) else ActiveSupport::Deprecation.warn(<<~EOM) In Rails 7.0, Action Mailer will pass the mail arguments inside the `:args` keyword argument. The `perform` method of the #{job} needs to change and forward the mail arguments from the `args` keyword argument. The `perform` method should now look like: `def perform(mailer, mail_method, delivery, args:)` EOM job.set(options).perform_later( @mailer_class.name, @action.to_s, delivery_method.to_s, *@args) end end end