Module: Fluent::Configurable

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

CONFIG_TYPE_REGISTRY =
Registry.new(:config_type, 'fluent/plugin/type_')

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(mod) ⇒ Object



26
27
28
# File 'lib/fluent/configurable.rb', line 26

def self.included(mod)
  mod.extend(ClassMethods)
end

.lookup_type(type) ⇒ Object



93
94
95
# File 'lib/fluent/configurable.rb', line 93

def self.lookup_type(type)
  CONFIG_TYPE_REGISTRY.lookup(type)
end

.register_type(type, callable = nil, &block) ⇒ Object



88
89
90
91
# File 'lib/fluent/configurable.rb', line 88

def self.register_type(type, callable = nil, &block)
  callable ||= block
  CONFIG_TYPE_REGISTRY.register(type, callable)
end

Instance Method Details

#configObject



82
83
84
# File 'lib/fluent/configurable.rb', line 82

def config
  @masked_config ||= @config.to_masked_element
end

#configure(conf) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/fluent/configurable.rb', line 51

def configure(conf)
  @config = conf

  logger = self.respond_to?(:log) ? log : (defined?($log) ? $log : nil)
  proxy = self.class.merged_configure_proxy
  conf.corresponding_proxies << proxy

  if self.respond_to?(:owner) && self.owner
    owner_proxy = owner.class.merged_configure_proxy
    if proxy.configured_in_section
      owner_proxy = owner_proxy.sections[proxy.configured_in_section]
    end
    proxy.overwrite_defaults(owner_proxy) if owner_proxy
  end

  # In the nested section, can't get plugin class through proxies so get plugin class here
  plugin_class = Fluent::Plugin.lookup_type_from_class(proxy.name.to_s)
  root = Fluent::Config::SectionGenerator.generate(proxy, conf, logger, plugin_class)
  @config_root_section = root

  root.instance_eval{ @params.keys }.each do |param_name|
    next if param_name.to_s.start_with?('@')
    varname = "@#{param_name}".to_sym
    if (! root[param_name].nil?) || (instance_variable_defined?(varname) && instance_variable_get(varname).nil?)
      instance_variable_set(varname, root[param_name])
    end
  end

  self
end

#initializeObject



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

def initialize
  super
  # to simulate implicit 'attr_accessor' by config_param / config_section and its value by config_set_default
  proxy = self.class.merged_configure_proxy
  proxy.params.keys.each do |name|
    next if name.to_s.start_with?('@')
    if proxy.defaults.has_key?(name)
      instance_variable_set("@#{name}".to_sym, proxy.defaults[name])
    end
  end
  proxy.sections.keys.each do |name|
    next if name.to_s.start_with?('@')
    subproxy = proxy.sections[name]
    if subproxy.multi?
      instance_variable_set("@#{subproxy.variable_name}".to_sym, [])
    else
      instance_variable_set("@#{subproxy.variable_name}".to_sym, nil)
    end
  end
end