module Lev::Routine::ClassMethods

Public Instance Methods

[](*args, **kwargs, &block) click to toggle source
# File lib/lev/routine.rb, line 207
def [](*args, **kwargs, &block)
  result = call(*args, **kwargs, &block)
  result.errors.raise_exception_if_any!
  result.outputs.send(@express_output)
end
active_job_enqueue_options() click to toggle source
# File lib/lev/routine.rb, line 221
def active_job_enqueue_options
  @active_job_enqueue_options || { queue: :default }
end
call(*args, **kwargs, &block) click to toggle source
# File lib/lev/routine.rb, line 203
def call(*args, **kwargs, &block)
  new.call(*args, **kwargs, &block)
end
class_to_symbol(klass) click to toggle source
# File lib/lev/routine.rb, line 267
def class_to_symbol(klass)
  klass.name.underscore.gsub('/','_').to_sym
end
create_status() click to toggle source
# File lib/lev/routine.rb, line 271
def create_status
  create_status_proc.call
end
delegates_to() click to toggle source
# File lib/lev/routine.rb, line 254
def delegates_to
  @delegates_to
end
express_output() click to toggle source
# File lib/lev/routine.rb, line 250
def express_output
  @express_output
end
find_status(id) click to toggle source
# File lib/lev/routine.rb, line 275
def find_status(id)
  find_status_proc.call(id)
end
job_class() click to toggle source
# File lib/lev/routine.rb, line 217
def job_class
  @job_class || Lev::ActiveJob::Base
end
nested_routines() click to toggle source
# File lib/lev/routine.rb, line 258
def nested_routines
  @nested_routines ||= {}
end
perform_later(*args, **kwargs, &block) click to toggle source
# File lib/lev/routine.rb, line 225
def perform_later(*args, **kwargs, &block)
  # Delegate to a subclass of Lev::Routine::ActiveJob::Base
  job_class.new.perform_later(self, active_job_enqueue_options, *args, **kwargs, &block)
end
raise_fatal_errors?() click to toggle source
# File lib/lev/routine.rb, line 262
def raise_fatal_errors?
  @raise_fatal_errors ||
    (Lev.configuration.raise_fatal_errors && @raise_fatal_errors.nil?)
end
set(options) click to toggle source
# File lib/lev/routine.rb, line 213
def set(options)
  Lev::ActiveJob::ConfiguredJob.new(self, options)
end
transaction_isolation() click to toggle source
# File lib/lev/routine.rb, line 246
def transaction_isolation
  @transaction_isolation ||= TransactionIsolation.mysql_default
end
uses_routine(routine_class, options={}) click to toggle source

Called at a routine’s class level to foretell which other routines will be used when this routine executes. Helpful for figuring out ahead of time what kind of transaction isolation level should be used.

# File lib/lev/routine.rb, line 233
def uses_routine(routine_class, options={})
  symbol = options[:as] || class_to_symbol(routine_class)

  warn("Routine #{routine_class} has already been registered") if nested_routines[symbol]

  nested_routines[symbol] = {
    routine_class: routine_class,
    options: options
  }

  transaction_isolation.replace_if_more_isolated(routine_class.transaction_isolation)
end