module Fluent::Configurable::ClassMethods

Public Instance Methods

config_param(name, *args, &block) click to toggle source
# File lib/fluent/configurable.rb, line 94
def config_param(name, *args, &block)
  configure_proxy(self.name).config_param(name, *args, &block)
  attr_accessor name
end
config_section(name, *args, &block) click to toggle source
# File lib/fluent/configurable.rb, line 103
def config_section(name, *args, &block)
  configure_proxy(self.name).config_section(name, *args, &block)
  attr_accessor configure_proxy(self.name).sections[name].param_name
end
config_set_default(name, defval) click to toggle source
# File lib/fluent/configurable.rb, line 99
def config_set_default(name, defval)
  configure_proxy(self.name).config_set_default(name, defval)
end
configure_proxy(mod_name) click to toggle source
# File lib/fluent/configurable.rb, line 85
def configure_proxy(mod_name)
  map = configure_proxy_map
  unless map[mod_name]
    proxy = Fluent::Config::ConfigureProxy.new(mod_name, required: true, multi: false)
    map[mod_name] = proxy
  end
  map[mod_name]
end
configure_proxy_map() click to toggle source
# File lib/fluent/configurable.rb, line 79
def configure_proxy_map
  map = {}
  self.define_singleton_method(:configure_proxy_map){ map }
  map
end
merged_configure_proxy() click to toggle source
# File lib/fluent/configurable.rb, line 108
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