class ChainedJob::StartChains

Attributes

args[R]
array_of_job_arguments[R]
job_arguments_key[R]
job_class[R]
parallelism[R]

Public Class Methods

new(args, job_class, job_arguments_key, array_of_job_arguments, parallelism) click to toggle source
# File lib/chained_job/start_chains.rb, line 15
def initialize(args, job_class, job_arguments_key, array_of_job_arguments, parallelism)
  @args = args
  @job_class = job_class
  @job_arguments_key = job_arguments_key
  @array_of_job_arguments = array_of_job_arguments
  @parallelism = parallelism
end
run(args, job_class, job_arguments_key, array_of_job_arguments, parallelism) click to toggle source
# File lib/chained_job/start_chains.rb, line 9
def self.run(args, job_class, job_arguments_key, array_of_job_arguments, parallelism)
  new(args, job_class, job_arguments_key, array_of_job_arguments, parallelism).run
end

Public Instance Methods

run() click to toggle source

rubocop:disable Metrics/AbcSize

# File lib/chained_job/start_chains.rb, line 24
def run
  with_hooks do
    log_chained_job_cleanup

    ChainedJob::CleanUpQueue.run(job_arguments_key)

    next unless array_of_job_arguments.count.positive?

    ChainedJob::StoreJobArguments.run(job_arguments_key, job_tag, array_of_job_arguments)

    log_chained_job_start

    parallelism.times { |worked_id| job_class.perform_later(args, worked_id, job_tag) }
  end
end

Private Instance Methods

job_tag() click to toggle source
# File lib/chained_job/start_chains.rb, line 56
def job_tag
  @job_tag ||= Time.now.to_f.to_s
end
log_chained_job_cleanup() click to toggle source
# File lib/chained_job/start_chains.rb, line 67
def log_chained_job_cleanup
  ChainedJob.logger.info(
    "#{job_class}:#{job_tag} cleanup"
  )
end
log_chained_job_start() click to toggle source
# File lib/chained_job/start_chains.rb, line 60
def log_chained_job_start
  ChainedJob.logger.info(
    "#{job_class}:#{job_tag} starting #{parallelism} workers "\
    "processing #{array_of_job_arguments.count} items"
  )
end
options() click to toggle source
# File lib/chained_job/start_chains.rb, line 47
def options
  {
    job_class: job_class,
    array_of_job_arguments: array_of_job_arguments,
    parallelism: parallelism,
    args: args,
  }
end
with_hooks() { || ... } click to toggle source

rubocop:enable Metrics/AbcSize

# File lib/chained_job/start_chains.rb, line 43
def with_hooks
  ChainedJob.config.around_start_chains.call(options) { yield }
end