class LogStashLogger::Device::MultiDelegator

Attributes

devices[R]

Public Class Methods

new(opts) click to toggle source
# File lib/logstash-logger/device/multi_delegator.rb, line 11
def initialize(opts)
  @io = self
  @devices = create_devices(opts)
  self.class.delegate(:write, :close, :close!, :flush)
end

Private Class Methods

delegate(*methods) click to toggle source
# File lib/logstash-logger/device/multi_delegator.rb, line 27
def self.delegate(*methods)
  methods.each do |m|
    define_method(m) do |*args|
      @devices.each { |device| device.send(m, *args) }
    end
  end
end

Private Instance Methods

create_devices(opts) click to toggle source
# File lib/logstash-logger/device/multi_delegator.rb, line 19
def create_devices(opts)
  output_configurations = opts.delete(:outputs)
  output_configurations.map do |device_opts|
    device_opts = opts.merge(device_opts)
    Device.new(device_opts)
  end
end