Method: Fluent::Config::DSL::Element#method_missing

Defined in:
lib/fluent/config/dsl.rb

#method_missing(name, *args, &block) ⇒ Object



91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/fluent/config/dsl.rb', line 91

def method_missing(name, *args, &block)
  ::Kernel.raise ::ArgumentError, "Configuration DSL Syntax Error: only one argument allowed" if args.size > 1
  value = args.first

  if block
    proxy = Proxy.new(name.to_s, value)
    proxy.element.instance_exec(&block)
    @elements.push(proxy.to_config_element)
  else
    param_name = RESERVED_PARAMETERS.include?(name) ? "@#{name}" : name.to_s
    @attrs[param_name] = if value.is_a?(Array) || value.is_a?(Hash)
                           JSON.dump(value)
                         else
                           value.to_s
                         end
  end

  self
end