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