Sha256: 99e116b3531f53b44af0b26686947dc96479567bbacaca4f4b74e1cc892023d5
Contents?: true
Size: 908 Bytes
Versions: 8
Compression:
Stored size: 908 Bytes
Contents
module Magent class AsyncChannel < GenericChannel def push(target, method_chain, priority) if target.kind_of?(Class) enqueue([target.to_s, nil, method_chain], priority) elsif target.class.respond_to?(:find) && target.respond_to?(:id) enqueue([target.class.to_s, target.id, method_chain], priority) else raise ArgumentError, "I don't know how to handle #{target.inspect}" end end def process!(message) klass, id, method_chain = message return false if method_chain.nil? target = resolve_target(klass, id) method_chain.each do |c| target = target.send(c[0], *c[1]) end true end private def resolve_target(klass, id) klass = Object.module_eval(klass) if klass.kind_of?(String) if id klass.find(id) else klass end end end # AsyncChannel end
Version data entries
8 entries across 8 versions & 1 rubygems