module Fluent::PluginId

Public Instance Methods

configure(conf) click to toggle source
Calls superclass method
# File lib/fluent/plugin_id.rb, line 23
def configure(conf)
  @id = conf['@id']
  @_id_configured = !!@id # plugin id is explicitly configured by users (or not)
  if @id
    @id = @id.to_s
    if @@configured_ids.include?(@id) && !plugin_id_for_test?
      raise Fluent::ConfigError, "Duplicated plugin id `#{@id}`. Check whole configuration and fix it."
    end
    @@configured_ids.add(@id)
  end

  super
end
plugin_id() click to toggle source
# File lib/fluent/plugin_id.rb, line 55
def plugin_id
  if instance_variable_defined?("@id")
    @id || "object:#{object_id.to_s(16)}"
  else
    "object:#{object_id.to_s(16)}"
  end
end
plugin_id_configured?() click to toggle source
# File lib/fluent/plugin_id.rb, line 49
def plugin_id_configured?
  if instance_variable_defined?("@_id_configured")
    @_id_configured
  end
end
plugin_id_for_test?() click to toggle source
# File lib/fluent/plugin_id.rb, line 37
def plugin_id_for_test?
  caller_locations.each do |location|
    # Thread::Backtrace::Location#path returns base filename or absolute path.
    # #absolute_path returns absolute_path always.
    # https://bugs.ruby-lang.org/issues/12159
    if location.absolute_path =~ /\/test_[^\/]+\.rb$/ # location.path =~ /test_.+\.rb$/
      return true
    end
  end
  false
end