module Fluent::Configurable::ClassMethods

Public Instance Methods

config_param(name, type = nil, **kwargs, &block) click to toggle source
# File lib/fluent/configurable.rb, line 157
def config_param(name, type = nil, **kwargs, &block)
  configure_proxy(self.name).config_param(name, type, **kwargs, &block)
  # reserved names '@foo' are invalid as attr_accessor name
  attr_accessor(name) unless kwargs[:skip_accessor] || Fluent::Config::Element::RESERVED_PARAMETERS.include?(name.to_s)
end
config_section(name, **kwargs, &block) click to toggle source
# File lib/fluent/configurable.rb, line 171
def config_section(name, **kwargs, &block)
  section_already_exists = !!merged_configure_proxy.sections[name]
  configure_proxy(self.name).config_section(name, **kwargs, &block)
  variable_name = configure_proxy(self.name).sections[name].variable_name
  if !section_already_exists && !self.respond_to?(variable_name)
    attr_accessor variable_name
  end
end
config_set_default(name, defval) click to toggle source
# File lib/fluent/configurable.rb, line 163
def config_set_default(name, defval)
  configure_proxy(self.name).config_set_default(name, defval)
end
config_set_desc(name, desc) click to toggle source
# File lib/fluent/configurable.rb, line 167
def config_set_desc(name, desc)
  configure_proxy(self.name).config_set_desc(name, desc)
end
configure_proxy(mod_name) click to toggle source
# File lib/fluent/configurable.rb, line 143
def configure_proxy(mod_name)
  map = configure_proxy_map
  unless map[mod_name]
    type_lookup = ->(type) { Fluent::Configurable.lookup_type(type) }
    proxy = Fluent::Config::ConfigureProxy.new(mod_name, root: true, required: true, multi: false, type_lookup: type_lookup)
    map[mod_name] = proxy
  end
  map[mod_name]
end
configure_proxy_map() click to toggle source
# File lib/fluent/configurable.rb, line 137
def configure_proxy_map
  map = {}
  self.define_singleton_method(:configure_proxy_map){ map }
  map
end
configured_in(section_name) click to toggle source
# File lib/fluent/configurable.rb, line 153
def configured_in(section_name)
  configure_proxy(self.name).configured_in(section_name)
end
desc(description) click to toggle source
# File lib/fluent/configurable.rb, line 180
def desc(description)
  configure_proxy(self.name).desc(description)
end
dump_config_definition() click to toggle source
# File lib/fluent/configurable.rb, line 196
def dump_config_definition
  configure_proxy_map[self.to_s].dump_config_definition
end
merged_configure_proxy() click to toggle source
# File lib/fluent/configurable.rb, line 184
def merged_configure_proxy
  configurables = ancestors.reverse.select{ |a| a.respond_to?(:configure_proxy) }

  # 'a.object_id.to_s' is to support anonymous class
  #   which created in tests to overwrite original behavior temporally
  #
  # p Module.new.name   #=> nil
  # p Class.new.name    #=> nil
  # p AnyGreatClass.dup.name #=> nil
  configurables.map{ |a| a.configure_proxy(a.name || a.object_id.to_s) }.reduce(:merge)
end