Sha256: bccfefa67cf0c13ff11beddf1d5c7db20a5799224ca4f6f7d24c7fbe933a9b16
Contents?: true
Size: 882 Bytes
Versions: 21
Compression:
Stored size: 882 Bytes
Contents
module LogStashLogger module Device class Balancer < Base attr_reader :devices def initialize(opts) @io = self @devices = create_devices(opts[:outputs]) self.class.delegate_to_all(:close, :close!, :flush) self.class.delegate_to_one(:write) end private def create_devices(opts) opts.map { |device_opts| Device.new(device_opts) } end def self.delegate_to_all(*methods) methods.each do |m| define_method(m) do |*args| devices.each { |device| device.send(m, *args) } end end end def self.delegate_to_one(*methods) methods.each do |m| define_method(m) do |*args| select_device.send(m, *args) end end end def select_device devices.sample end end end end
Version data entries
21 entries across 21 versions & 3 rubygems