Class: Julewire::Core::Destinations::Definition

Inherits:
Object
  • Object
show all
Defined in:
lib/julewire/core/destinations/definition.rb

Constant Summary collapse

OPTION_KEYS =
%i[
  close_output
  encoder
  formatter
  max_record_bytes
  name
  on_drop
  on_failure
  output
  processors
].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(kind, **options) ⇒ Definition

Returns a new instance of Definition.



24
25
26
27
28
29
# File 'lib/julewire/core/destinations/definition.rb', line 24

def initialize(kind, **options)
  @kind = Destinations.normalize_name(kind)
  validate_options!(options)
  @name = Destinations.normalize_name(options.fetch(:name, @kind))
  @options = options.freeze
end

Instance Attribute Details

#kindObject (readonly)



22
23
24
# File 'lib/julewire/core/destinations/definition.rb', line 22

def kind
  @kind
end

#nameObject (readonly)



22
23
24
# File 'lib/julewire/core/destinations/definition.rb', line 22

def name
  @name
end

Instance Method Details

#build(defaults:, output_identities: nil) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/julewire/core/destinations/definition.rb', line 31

def build(defaults:, output_identities: nil)
  return build_factory_destination(defaults, output_identities: output_identities) if factory

  output = resolve(:output, defaults)
  reject_shared_output!(output, output_identities) if output_identities && !output.nil?

  Destination.new(
    name: name,
    close_output: resolve(:close_output, defaults),
    encoder: resolve(:encoder, defaults),
    formatter: resolve(:formatter, defaults),
    max_record_bytes: resolve(:max_record_bytes, defaults),
    on_drop: resolve(:on_drop, defaults),
    on_failure: resolve(:on_failure, defaults),
    output: output,
    error_backtrace_lines: defaults.fetch(:error_backtrace_lines),
    processors: resolve(:processors, defaults)
  )
end

#copyObject



51
52
53
# File 'lib/julewire/core/destinations/definition.rb', line 51

def copy
  self.class.new(kind, **@options)
end