Class: Announce::Adapters::ShoryukenAdapter::Subscriber

Inherits:
BaseAdapter::Subscriber show all
Defined in:
lib/announce/adapters/shoryuken_adapter.rb

Instance Method Summary collapse

Instance Method Details

#active_job?Boolean

Returns:

  • (Boolean)


40
41
42
43
44
45
# File 'lib/announce/adapters/shoryuken_adapter.rb', line 40

def active_job?
  defined?(::ActiveJob) &&
    defined?(ActiveJob::QueueAdapters::ShoryukenAdapter) &&
    ActiveJob::Base.queue_adapter ==
      ActiveJob::QueueAdapters::ShoryukenAdapter
end

#register_class(worker_class) ⇒ Object



30
31
32
33
34
35
36
37
38
# File 'lib/announce/adapters/shoryuken_adapter.rb', line 30

def register_class(worker_class)
  if active_job?
    Class.new(AnnounceWorker).tap do |jc|
      jc.class_eval("def job_class; #{worker_class.name}; end")
    end
  else
    worker_class
  end
end

#subscribe(worker_class, subject, actions, options) ⇒ Object



22
23
24
25
26
27
28
# File 'lib/announce/adapters/shoryuken_adapter.rb', line 22

def subscribe(worker_class, subject, actions, options)
  Array(actions).each do |action|
    queue_name = Queue.name_for(subject, action)
    Shoryuken.register_worker(queue_name, register_class(worker_class))
    Shoryuken.queues << queue_name
  end
end