class Operationable::Runners::Base

Attributes

callbacks[R]
params[R]
record[R]
result[R]
user[R]

Public Class Methods

new(record, params, result, user) click to toggle source
# File lib/operationable/runners/base.rb, line 45
def initialize(record, params, result, user)
  @record = record
  @params = params
  @result = result
  @user = user
  @callbacks = []

  initialize_callbacks
end

Public Instance Methods

check_status?() click to toggle source
# File lib/operationable/runners/base.rb, line 59
def check_status?
  true
end
ensure_enqueue() click to toggle source
# File lib/operationable/runners/base.rb, line 70
def ensure_enqueue

end
job_async_execute_method() click to toggle source
# File lib/operationable/runners/base.rb, line 82
def job_async_execute_method
  :perform_later
end
job_class() click to toggle source
# File lib/operationable/runners/base.rb, line 74
def job_class
  'OperationJob'
end
job_sync_execute_method() click to toggle source
# File lib/operationable/runners/base.rb, line 78
def job_sync_execute_method
  :perform_later
end
persist?() click to toggle source
# File lib/operationable/runners/base.rb, line 63
def persist?
  true
end
run() click to toggle source
# File lib/operationable/runners/base.rb, line 67
def run
end
store_callback(q_options) click to toggle source
# File lib/operationable/runners/base.rb, line 55
def store_callback(q_options)
  q_options
end

Private Instance Methods

action_name() click to toggle source
# File lib/operationable/runners/base.rb, line 149
def action_name
  operation_class_name.split('::')[-2..-1].join(' ').titleize
end
activity() click to toggle source
# File lib/operationable/runners/base.rb, line 145
def activity
  operation_class_name.split('::').last.underscore
end
callback_class_name() click to toggle source
# File lib/operationable/runners/base.rb, line 125
def callback_class_name
  "#{operation_class_name}::Callback"
end
check_callbacks() click to toggle source
# File lib/operationable/runners/base.rb, line 106
def check_callbacks
  callbacks.find_all do |callback|
    satisfy = specification&.try("should_#{callback[:callback_method_name]}".to_sym)
    satisfy.nil? || satisfy
  end
end
class_name() click to toggle source
# File lib/operationable/runners/base.rb, line 153
def class_name
  self.class.name
end
delayer() click to toggle source
# File lib/operationable/runners/base.rb, line 117
def delayer
  @delayer ||= delayer_class_name.constantize.new(record, user, params, result, activity, action_name)
end
delayer_class_name() click to toggle source
# File lib/operationable/runners/base.rb, line 137
def delayer_class_name
  "#{operation_class_name}::Delayer"
end
initialize_callbacks() click to toggle source
# File lib/operationable/runners/base.rb, line 92
def initialize_callbacks
end
operation_class_name() click to toggle source
# File lib/operationable/runners/base.rb, line 141
def operation_class_name
  self.class.name.chomp('::Runner')
end
perform(job_class_name, args, delayed_params) click to toggle source
# File lib/operationable/runners/base.rb, line 161
def perform(job_class_name, args, delayed_params)
  job_class_name.to_s.constantize.set(delayed_params).method(perform_method).call(args)
end
perform_method() click to toggle source
# File lib/operationable/runners/base.rb, line 157
def perform_method
  sync? ? job_sync_execute_method : job_async_execute_method
end
props() click to toggle source
# File lib/operationable/runners/base.rb, line 88
def props
  serializer_instance.serialize
end
push_to_queue(*callback_method_names, job_class_name: nil, queue: nil, params: {}) click to toggle source
# File lib/operationable/runners/base.rb, line 95
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: queue.to_s,
      params: params
    }
  end
end
serializer_class_name() click to toggle source
# File lib/operationable/runners/base.rb, line 129
def serializer_class_name
  "#{operation_class_name}::Serializer"
end
serializer_instance() click to toggle source
# File lib/operationable/runners/base.rb, line 113
def serializer_instance
  @serializer_instance ||= serializer_class_name.constantize.new(record, user, params, result, activity, action_name)
end
specification() click to toggle source
# File lib/operationable/runners/base.rb, line 121
def specification
  @specification ||= specification_class_name.constantize.new(record, user, params, result, activity, action_name)
end
specification_class_name() click to toggle source
# File lib/operationable/runners/base.rb, line 133
def specification_class_name
  "#{operation_class_name}::Specification"
end
sync?() click to toggle source
# File lib/operationable/runners/base.rb, line 165
def sync?
  %w(test development).include? Rails.env
end