module SidekiqRemoveScheduled::Hooks::ProcessHook

Public Class Methods

execute_job_hook(base) click to toggle source

This method is responsible for extending execute_job method It search current job in redis queue and remove it from job_queue key

# File lib/sidekiq_remove_scheduled/hooks/process_hook.rb, line 16
def self.execute_job_hook(base)
  default_execute_job = base.instance_method(:execute_job)
  base.send :define_method, :execute_job do |worker, args|
    default_execute_job.bind(self).call(worker, args)
    field = "#{worker.class.to_s}-#{args.to_s}"
    ::SidekiqRemoveScheduled::Logger.log("Processing and removing job id: #{worker.jid} for field: #{field}")
    jobs = ::SidekiqRemoveScheduled::Redis.job_queue.get(field).to_s.split(',')
    jobs.delete(worker.jid)
    if jobs.blank?
      ::SidekiqRemoveScheduled::Redis.job_queue.del(field)
    else
      ::SidekiqRemoveScheduled::Redis.job_queue.set(field, jobs.join(','))
    end
  end
end
included(base) click to toggle source
# File lib/sidekiq_remove_scheduled/hooks/process_hook.rb, line 9
def self.included(base)
  execute_job_hook base
end