aboutsummaryrefslogblamecommitdiffstats
path: root/actionmailbox/app/models/action_mailbox/inbound_email/routable.rb
blob: 39565df16636bb4b19b69081524d3dc45d1adcc2 (plain) (tree)
1
2
3
4
5
6
7
8

                             

                                                                                                              
 
                                                                                                               
                                                    
                                            


                               
                                                   

     
                                                   
                 
                                                
     
 
                                                                                           


                                 
   
# 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