Sha256: 6b0305520ebaef3766e59a69e88ca143901e8b092fc264e25efeed8753f6177f

Contents?: true

Size: 1.23 KB

Versions: 3

Compression:

Stored size: 1.23 KB

Contents

module DeliveryUncle
  class EmailQueue
    module ClassMethods
      def queue(request)
        return if not_allowed?(request)
        
        QueueRequest.new(request)
      end

      def pause(request)
        return if not_allowed?(request)
        
        request.save_status!(:paused)
      end

      def retry(request)
        return if not_allowed?(request)
        
        RetryRequest.new(request)
      end
 
      def not_allowed?(request)
        return true if request.blank? || request.sent?

        if Activity.blocked_mailers.include?(request.mailer)
          request.save_status!(:blocked)
          return true
        end

        return false
      end
    end
    extend ClassMethods 
     
    protected
    class QueueRequest
      def initialize(request)
        request.save_status!(:enqueue)
        begin
          Resque.enqueue(DeliveryUncle::SendEmailRequest, request.id)
        rescue => e
          Rails.logger.error e.message
          Rails.logger.error e.backtrace.join("\n")
          request.save_status!(:error_on_enqueue)
        end
      end
    end
    
    class RetryRequest
      def initialize(request)
        request.save_status!(:retrying)
        QueueRequest.new(request)
      end
    end  
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
delivery_uncle-0.1.5 app/services/delivery_uncle/email_queue.rb
delivery_uncle-0.1.4 app/services/delivery_uncle/email_queue.rb
delivery_uncle-0.1.3 app/services/delivery_uncle/email_queue.rb