class ScaleWorkers::Adapter::DelayedJobActiveRecord

Constants

PRIME
TIMEOUT

Attributes

pid_switch[RW]

Public Class Methods

new() click to toggle source
# File lib/scale_workers/adapter/delayed_job_active_record.rb, line 18
def initialize
  @pid_switch = 0
end

Public Instance Methods

count_procedure() click to toggle source
# File lib/scale_workers/adapter/delayed_job_active_record.rb, line 42
def count_procedure
  lambda {|queue, max_failure| Delayed::Job.where(queue: queue).where("attempts <= ?", max_failure).count}
end
dj_call(command, queue, pid_dir, count) click to toggle source
# File lib/scale_workers/adapter/delayed_job_active_record.rb, line 54
def dj_call(command, queue, pid_dir, count)
  say('DJ call')
  `cd #{Rails.root.to_s}; RAILS_ENV=#{Rails.env} #{::ScaleWorkers.configuration.worker_executable_path} --queue='#{queue}' -p'#{queue}' --pid-dir=#{pid_dir} -n#{count} #{command}`
end
increment_pid_switch() click to toggle source
# File lib/scale_workers/adapter/delayed_job_active_record.rb, line 46
def increment_pid_switch
  self.pid_switch = (self.pid_switch + 1) % PRIME
end
pid_dir(queue) click to toggle source
# File lib/scale_workers/adapter/delayed_job_active_record.rb, line 50
def pid_dir(queue)
  File.join(Rails.root.to_s, "tmp", "pids", "#{queue}.#{self.pid_switch}")
end
start_procedure() click to toggle source
# File lib/scale_workers/adapter/delayed_job_active_record.rb, line 32
def start_procedure
  lambda do |queue, count|
    say('Inside start procedure')
    adapter = self #::ScaleWorkers.configuration.adapter
    adapter.increment_pid_switch
    pid_dir = adapter.pid_dir(queue)
    adapter.dj_call(adapter.class::Command::START, queue, pid_dir, count)
  end
end
stop_procedure() click to toggle source
# File lib/scale_workers/adapter/delayed_job_active_record.rb, line 22
def stop_procedure
  lambda do |queue, count|
    say('Inside stop procedure')
    adapter = self#::ScaleWorkers.configuration.adapter
    pid_dir = adapter.pid_dir(queue)
    adapter.dj_call(adapter.class::Command::STOP, queue, pid_dir, count)
    sleep(adapter.class::TIMEOUT)
  end
end