module RocketJob::Batch::Categories::ClassMethods

Public Instance Methods

from_properties(properties) click to toggle source

Builds this job instance from the supplied properties hash that may contain input and output categories. Keeps the defaults and merges in settings without replacing existing categories.

Calls superclass method
# File lib/rocket_job/batch/categories.rb, line 53
def from_properties(properties)
  return super(properties) unless properties.key?("input_categories") || properties.key?("output_categories")

  properties        = properties.dup
  input_categories  = properties.delete("input_categories")
  output_categories = properties.delete("output_categories")
  job               = super(properties)
  job.merge_input_categories(input_categories)
  job.merge_output_categories(output_categories)
  job
end
input_category(**args) click to toggle source

Define a new input category @see RocketJob::Category::Input

# File lib/rocket_job/batch/categories.rb, line 31
def input_category(**args)
  category = RocketJob::Category::Input.new(**args)
  if defined_input_categories.nil?
    self.defined_input_categories = [category]
  else
    rocketjob_categories_set(category, defined_input_categories)
  end
end
output_category(**args) click to toggle source

Define a new output category @see RocketJob::Category::Output

# File lib/rocket_job/batch/categories.rb, line 42
def output_category(**args)
  category = RocketJob::Category::Output.new(**args)
  if defined_output_categories.nil?
    self.defined_output_categories = [category]
  else
    rocketjob_categories_set(category, defined_output_categories)
  end
end

Private Instance Methods

rocketjob_categories_set(category, categories) click to toggle source
# File lib/rocket_job/batch/categories.rb, line 67
def rocketjob_categories_set(category, categories)
  index = categories.find_index { |cat| cat.name == category.name }
  index ? categories[index] = category : categories << category
  category
end