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