module WorkerTools::Basics
Public Class Methods
read_wrappers()
click to toggle source
# File lib/worker_tools/basics.rb, line 15 def self.read_wrappers @wrappers || [] end
wrappers(*args)
click to toggle source
# File lib/worker_tools/basics.rb, line 11 def self.wrappers(*args) @wrappers ||= args.flatten end
Public Instance Methods
create_model_if_not_available()
click to toggle source
# File lib/worker_tools/basics.rb, line 70 def create_model_if_not_available false end
finalize()
click to toggle source
# File lib/worker_tools/basics.rb, line 63 def finalize model.update!( state: 'complete', information: information ) end
model()
click to toggle source
# File lib/worker_tools/basics.rb, line 74 def model @model ||= find_model end
model_class()
click to toggle source
# File lib/worker_tools/basics.rb, line 20 def model_class # Ex: Import raise "model_class has to be defined in #{self}" end
model_kind()
click to toggle source
# File lib/worker_tools/basics.rb, line 25 def model_kind # Ex: 'sdom' raise "model_kind has to be defined in #{self}" end
perform(model_id = nil)
click to toggle source
# File lib/worker_tools/basics.rb, line 34 def perform(model_id = nil) @model_id = model_id with_wrappers(wrapper_methods) do run end end
run()
click to toggle source
# File lib/worker_tools/basics.rb, line 30 def run raise "run has to be defined in #{self}" end
with_wrapper_basics(&block)
click to toggle source
# File lib/worker_tools/basics.rb, line 50 def with_wrapper_basics(&block) block.yield finalize # this time we do want to catch Exception to attempt to handle some of the # critical errors. # rubocop:disable Lint/RescueException rescue Exception # rubocop:enable Lint/RescueException model.state = 'failed' model.save!(validate: false) raise end
with_wrappers(wrapper_symbols) { || ... }
click to toggle source
# File lib/worker_tools/basics.rb, line 78 def with_wrappers(wrapper_symbols, &block) return yield if wrapper_symbols.blank? current_wrapper_symbol = wrapper_symbols.shift send(current_wrapper_symbol) { with_wrappers(wrapper_symbols, &block) } end
wrapper_methods()
click to toggle source
# File lib/worker_tools/basics.rb, line 41 def wrapper_methods self.class.read_wrappers.map do |wrapper| symbolized_method = "with_wrapper_#{wrapper}".to_sym raise "Missing wrapper #{wrapper}" unless respond_to?(symbolized_method) symbolized_method end end
Private Instance Methods
find_model()
click to toggle source
# File lib/worker_tools/basics.rb, line 87 def find_model @model_id ||= nil return @model_id if @model_id.is_a?(model_class) return model_class.find(@model_id) if @model_id raise 'Model not available' unless create_model_if_not_available t = model_class.new t.kind = model_kind if t.respond_to?(:kind=) t.save!(validate: false) t end