module GenericJob::Perform

Public Instance Methods

perform(receiver, data) click to toggle source
# File lib/generic_job/perform.rb, line 5
def perform(receiver, data)
  case receiver
  when Hash
    handle_passed_hash receiver.symbolize_keys, data
  when String
    handle_passed_obj receiver.constantize, data
  else
    handle_passed_obj receiver, data
  end
end

Private Instance Methods

fetch_receiver(hash) click to toggle source
# File lib/generic_job/perform.rb, line 18
def fetch_receiver(hash)
  if hash[:init_args]
    hash[:class].constantize.new(**to_array(hash[:init_args]).first)
  else
    hash[:class].constantize
  end
end
handle_passed_hash(hash, meth) click to toggle source
# File lib/generic_job/perform.rb, line 26
def handle_passed_hash(hash, meth)
  if hash[:meth_args]
    fetch_receiver(hash).send meth, *to_array(hash[:meth_args])
  else
    fetch_receiver(hash).send meth
  end
end
handle_passed_obj(obj, data) click to toggle source
# File lib/generic_job/perform.rb, line 34
def handle_passed_obj(obj, data)
  case data
  when String
    obj.send data
  when Hash
    args = data[:args] || [data[:arg]]
    obj.send data[:meth], *args
  end
end
to_array(args) click to toggle source
# File lib/generic_job/perform.rb, line 44
def to_array(args)
  return args if args.is_a? Array

  [args]
end