41 lines
861 B
Ruby
41 lines
861 B
Ruby
Sidekiq::Worker.extend ActiveSupport::Concern
|
|
|
|
module ApplicationWorker
|
|
extend ActiveSupport::Concern
|
|
|
|
include Sidekiq::Worker
|
|
|
|
included do
|
|
sidekiq_options queue: base_queue_name
|
|
end
|
|
|
|
module ClassMethods
|
|
def base_queue_name
|
|
name
|
|
.sub(/\AGitlab::/, '')
|
|
.sub(/Worker\z/, '')
|
|
.underscore
|
|
.tr('/', '_')
|
|
end
|
|
|
|
def queue
|
|
get_sidekiq_options['queue'].to_s
|
|
end
|
|
|
|
def bulk_perform_async(args_list)
|
|
Sidekiq::Client.push_bulk('class' => self, 'args' => args_list)
|
|
end
|
|
|
|
def bulk_perform_in(delay, args_list)
|
|
now = Time.now.to_i
|
|
schedule = now + delay.to_i
|
|
|
|
if schedule <= now
|
|
raise ArgumentError, 'The schedule time must be in the future!'
|
|
end
|
|
|
|
Sidekiq::Client.push_bulk('class' => self, 'args' => args_list, 'at' => schedule)
|
|
end
|
|
end
|
|
end
|