class LogStashLogger::Device::Balancer

Attributes

devices[R]

Public Class Methods

new(opts) click to toggle source
# File lib/logstash-logger/device/balancer.rb, line 6
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 Class Methods

delegate_to_all(*methods) click to toggle source
# File lib/logstash-logger/device/balancer.rb, line 19
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
delegate_to_one(*methods) click to toggle source
# File lib/logstash-logger/device/balancer.rb, line 27
def self.delegate_to_one(*methods)
  methods.each do |m|
    define_method(m) do |*args|
      select_device.send(m, *args)
    end
  end
end

Private Instance Methods

create_devices(opts) click to toggle source
# File lib/logstash-logger/device/balancer.rb, line 15
def create_devices(opts)
  opts.map { |device_opts| Device.new(device_opts) }
end
select_device() click to toggle source
# File lib/logstash-logger/device/balancer.rb, line 35
def select_device
  devices.sample
end