method

enqueue_delivery

Importance_0
v6.1.3.1 - Show latest stable - 0 notes - Class: MessageDelivery
enqueue_delivery(delivery_method, options = {}) private

No documentation

This method has no description. You can help the Ruby on Rails community by adding new notes.

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 6.2, 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
Register or log in to add new notes.