class RailsEventStore::AfterCommitAsyncDispatcher

Public Class Methods

new(scheduler:) click to toggle source
# File lib/rails_event_store/after_commit_async_dispatcher.rb, line 5
def initialize(scheduler:)
  @scheduler = scheduler
end

Public Instance Methods

async_record(schedule_proc) click to toggle source
# File lib/rails_event_store/after_commit_async_dispatcher.rb, line 23
def async_record(schedule_proc)
  AsyncRecord.new(schedule_proc)
end
call(subscriber, _, record) click to toggle source
# File lib/rails_event_store/after_commit_async_dispatcher.rb, line 9
def call(subscriber, _, record)
  run { @scheduler.call(subscriber, record) }
end
run() { || ... } click to toggle source
# File lib/rails_event_store/after_commit_async_dispatcher.rb, line 13
def run(&schedule_proc)
  transaction = ActiveRecord::Base.connection.current_transaction

  if transaction.joinable?
    transaction.add_record(async_record(schedule_proc))
  else
    yield
  end
end
verify(subscriber) click to toggle source
# File lib/rails_event_store/after_commit_async_dispatcher.rb, line 27
def verify(subscriber)
  @scheduler.verify(subscriber)
end