# frozen_string_literal: true # A newly received +InboundEmail+ will not be routed synchronously as part of ingress controller's receival. # Instead, the routing will be done asynchronously, using a +RoutingJob+, to ensure maximum parallel capacity. # # By default, all newly created +InboundEmail+ records that have the status of +pending+, which is the default, # will be scheduled for automatic, deferred routing. module ActionMailbox::InboundEmail::Routable extend ActiveSupport::Concern included do after_create_commit :route_later, if: :pending? end # Enqueue a +RoutingJob+ for this +InboundEmail+. def route_later ActionMailbox::RoutingJob.perform_later self end # Route this +InboundEmail+ using the routing rules declared on the +ApplicationMailbox+. def route ApplicationMailbox.route self end end