1
0
mirror of https://github.com/meineerde/rackstash.git synced 2026-03-24 17:19:53 +00:00
rackstash/lib/rackstash/target_list.rb
Holger Just 5f68082810 Add Rackstash::TargetList to hold a list of defined log targets
The TargetList behaves mostly like an array which ensures that all its
elements are Targets.
2017-04-27 23:49:56 +02:00

51 lines
888 B
Ruby

module Rackstash
class TargetList
def initialize(*targets)
@targets = Concurrent::Array.new
targets.flatten.each do |target|
add(target)
end
end
def <<(target)
target = Target.new(target) unless target.is_a?(Target)
@targets << target
self
end
alias add <<
def [](index)
@targets[index]
end
def []=(index, target)
target = Target.new(target) unless target.is_a?(Target)
@targets[index] = target
end
def empty?
@targets.empty?
end
def inspect
id_str = (object_id << 1).to_s(16).rjust(DEFAULT_OBJ_ID_STR_WIDTH, '0')
"#<#{self.class.name}:0x#{id_str} #{self}>"
end
def length
@targets.length
end
alias size length
def to_ary
@targets.to_a
end
alias to_a to_ary
def to_s
@targets.to_s
end
end
end