Sha256: bd43ebbea87a5db66481e716c4f3fd84bf506929d3497816c5b01e86f9fc9e31
Contents?: true
Size: 700 Bytes
Versions: 2
Compression:
Stored size: 700 Bytes
Contents
class Outbox < ApplicationRecord attribute :allow_publish, :boolean, default: true # Callbacks before_create :set_last_attempted_at before_save :check_publishing after_commit :publish, if: :allow_publish? # Enums enum status: { pending: 0, published: 1, failed: 2 } enum size: { single: 0, batch: 1 } # Validations validates :payload, :exchange, :routing_key, presence: true # Associations belongs_to :outboxable, polymorphic: true, optional: true def set_last_attempted_at self.last_attempted_at = 10.seconds.from_now end def publish Outboxable::Worker.perform_async(id) end def check_publishing self.allow_publish = false if published? end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
outboxable-0.1.5 | lib/templates/outbox.rb |
outboxable-0.1.4 | lib/templates/outbox.rb |