gitlab-ce/gems/gitlab-active-context/lib/active_context/tracker.rb

41 lines
908 B
Ruby

# frozen_string_literal: true
module ActiveContext
class Tracker
class << self
def track!(*objects, collection: nil, queue: nil)
references = collect_references(objects.flatten, collection)
return 0 if references.empty?
queue_to_use = queue || collection.queue
queue_to_use.push(references)
references.count
end
private
def collect_references(objects, collection)
objects.flat_map do |obj|
if obj.is_a?(ActiveContext::Reference)
obj.serialize
elsif obj.is_a?(String)
obj
else
next collection.new(obj).references if collection
logger.warn("ActiveContext unable to track `#{obj}`: Collection must be specified")
[]
end
end
end
def logger
ActiveContext::Config.logger
end
end
end
end