class Operationable::Runners::Separate

Public Class Methods

call(params) click to toggle source
# File lib/operationable/runners/separate.rb, line 38
def call(params)
  q_options = extract_q_options(params)
  props = extract_props(params)
  
  q_options[:callback_class_name].constantize.new(props, q_options).method(q_options[:callback_method_name]).call
end
extract_props(params) click to toggle source
# File lib/operationable/runners/separate.rb, line 45
def extract_props(params)
  params['props'].deep_symbolize_keys
end
extract_q_options(params) click to toggle source
# File lib/operationable/runners/separate.rb, line 49
def extract_q_options(params)
  params['q_options'].deep_symbolize_keys
end
operation_name() click to toggle source
# File lib/operationable/runners/separate.rb, line 34
def operation_name
  self.to_s.split('::').last(3).first(2).map(&:underscore).join(':')
end

Public Instance Methods

get_delayed_params(callback_method_name) click to toggle source
# File lib/operationable/runners/separate.rb, line 21
def get_delayed_params(callback_method_name)
  delay = delayer&.try("delay_#{callback_method_name}".to_sym)
  delay.nil? ? {} : delay
end
process(callback_method_name:, job_class_name: nil, queue: nil, params:) click to toggle source
# File lib/operationable/runners/separate.rb, line 9
def process(callback_method_name:, job_class_name: nil, queue: nil, params:)
  # callback can be class
  # callback_class = callback_method_name.to_s.safe_constantize

  args = {
    q_options: q_options(callback_method_name, queue).to_h,
    props: props.merge(params).to_h
  }.to_h.deep_stringify_keys
  
  queue.blank? ? self.class.call(args) : perform(job_class_name, args, get_delayed_params(callback_method_name))
end
q_options(callback_method_name, queue) click to toggle source
# File lib/operationable/runners/separate.rb, line 26
def q_options(callback_method_name, queue)
  store_callback({ type: 'separate',
    callback_class_name: callback_class_name,
    callback_method_name: callback_method_name,
    queue: queue })
end
run() click to toggle source
# File lib/operationable/runners/separate.rb, line 5
def run
  check_callbacks.each { |callback| process(callback) }
end