Module: Operationable::Runners::Wrappable

Included in:
Base
Defined in:
lib/operationable/runners/base.rb

Instance Method Summary collapse

Instance Method Details

#add_part(modul, opts = nil) ⇒ Object



16
17
18
# File 'lib/operationable/runners/base.rb', line 16

def add_part(modul, opts=nil)
  modul.execute(self, opts)
end

#callbacksObject



20
21
22
# File 'lib/operationable/runners/base.rb', line 20

def callbacks
  @callbacks ||= []
end

#inherited_callbacksObject



24
25
26
27
28
29
# File 'lib/operationable/runners/base.rb', line 24

def inherited_callbacks
  ancestors
    .grep(Wrappable)
    .reverse
    .flat_map(&:callbacks)
end

#new(*arguments, &block) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/operationable/runners/base.rb', line 31

def new(*arguments, &block)
  instance = allocate
  instance.send(:initialize, *arguments, &block)
  instance_callbacks = instance.instance_variable_get(:@callbacks)
  instance.instance_variable_set(:@callbacks, instance_callbacks.concat(inherited_callbacks).uniq)
  instance
end

#push_to_queue(*callback_method_names, job_class_name: nil, queue: nil, params: {}) ⇒ Object



5
6
7
8
9
10
11
12
13
14
# File 'lib/operationable/runners/base.rb', line 5

def push_to_queue(*callback_method_names, job_class_name: nil, queue: nil, params: {})
  callback_method_names.each do |callback_method_name|
    callbacks << {
      callback_method_name: callback_method_name.to_s,
      job_class_name: job_class_name.nil? ? job_class.to_s : job_class_name.to_s,
      queue: (job_class_name && queue.blank?) ? job_class_name.to_s.constantize.queue_name : queue.to_s,
      params: params
    }
  end
end