module ActiveJobChannel::Broadcaster

Public Instance Methods

active_job_channel(options = {}) click to toggle source
# File lib/active_job_channel/broadcaster.rb, line 9
def active_job_channel(options = {})
  class_attribute :ajc_config
  self.ajc_config = { global_broadcast: false }
  ajc_config.merge!(options)

  after_perform :broadcast_success
  rescue_from '::StandardError' do |exception|
    broadcast_failure(exception)
    raise exception
  end
end
ajc_channel_name() click to toggle source
# File lib/active_job_channel/broadcaster.rb, line 28
def ajc_channel_name
  if ajc_config[:global_broadcast]
    if ajc_identifier.present?
      raise UnnecessaryIdentifierError, self.class.to_s
    end

    ::ActiveJobChannel::Channel::CHANNEL_NAME
  else
    [::ActiveJobChannel::Channel::CHANNEL_NAME, ajc_identifier].
      compact.
      join('#')
  end
end
ajc_identifier() click to toggle source
# File lib/active_job_channel/broadcaster.rb, line 42
def ajc_identifier
  if ajc_identifier_missing?
    raise ::ActiveJobChannel::NoIdentifierError, self.class.to_s
  end

  @ajc_identifier
end
ajc_identifier_missing?() click to toggle source
# File lib/active_job_channel/broadcaster.rb, line 50
def ajc_identifier_missing?
  !ajc_config[:global_broadcast] && @ajc_identifier.nil?
end
broadcast_failure(exception) click to toggle source
# File lib/active_job_channel/broadcaster.rb, line 54
def broadcast_failure(exception)
  ::ActionCable.server.broadcast(
    ajc_channel_name,
    status: 'failure',
    data: serialize,
    error: exception.inspect
  )
end
broadcast_success() click to toggle source
# File lib/active_job_channel/broadcaster.rb, line 63
def broadcast_success
  ::ActionCable.server.broadcast(
    ajc_channel_name,
    status: 'success',
    data: serialize
  )
end