module LaGear::ActiveRecord::PublishTriggerable

Public Instance Methods

publish_after_commit(routing_key, opts) { |self| ... } click to toggle source
# File lib/la_gear/active_record/publish_triggerable.rb, line 4
def publish_after_commit(routing_key, opts)
  publish_method = "publish_#{routing_key}"
  la_gear_opts = la_gear_options(opts)
  define_method publish_method do
    message = block_given? ? yield(self) : {}
    Bus.publish(routing_key.to_s, message, la_gear_opts)
  end
  after_commit publish_method.to_sym, after_commit_options(opts)
end
send_after_commit(routing_key, opts) { |self| ... } click to toggle source
# File lib/la_gear/active_record/publish_triggerable.rb, line 14
def send_after_commit(routing_key, opts)
  publish_method = "publish_#{routing_key}"
  la_gear_opts = la_gear_options(opts)
  define_method publish_method do
    message = block_given? ? yield(self) : {}
    Bus.publish_local(routing_key.to_s, message, la_gear_opts)
  end
  after_commit publish_method.to_sym, after_commit_options(opts)
end
send_in_after_commit(routing_key, opts, interval) { |self| ... } click to toggle source
# File lib/la_gear/active_record/publish_triggerable.rb, line 24
def send_in_after_commit(routing_key, opts, interval)
  publish_method = "publish_#{routing_key}"
  la_gear_opts = la_gear_options(opts)
  define_method publish_method do
    message = block_given? ? yield(self) : {}
    Bus.publish_local_in(routing_key.to_s, message, la_gear_opts, interval)
  end
  after_commit publish_method.to_sym, after_commit_options(opts)
end

Private Instance Methods

after_commit_options(opts = {}) click to toggle source
# File lib/la_gear/active_record/publish_triggerable.rb, line 36
def after_commit_options(opts = {})
  opts.reject { |k, _v| [:version, :suffix].include?(k) }
end
la_gear_options(opts = {}) click to toggle source
# File lib/la_gear/active_record/publish_triggerable.rb, line 40
def la_gear_options(opts = {})
  opts.select { |k, _v| [:version, :suffix].include?(k) }
end