Class: Fluent::Plugin::ConditionCheckerOutput::RubyPlaceholderExpander

Inherits:
Object
  • Object
show all
Defined in:
lib/fluent/plugin/out_condition_checker.rb

Overview

THIS CLASS MUST BE THREAD-SAFE

Defined Under Namespace

Classes: CleanroomExpander

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ RubyPlaceholderExpander

Returns a new instance of RubyPlaceholderExpander.



292
293
294
295
296
# File 'lib/fluent/plugin/out_condition_checker.rb', line 292

def initialize(params)
  @log = params[:log]
  @auto_typecast = params[:auto_typecast]
  @cleanroom_expander = CleanroomExpander.new
end

Instance Attribute Details

#logObject (readonly)

Returns the value of attribute log.



290
291
292
# File 'lib/fluent/plugin/out_condition_checker.rb', line 290

def log
  @log
end

Instance Method Details

#expand(str, placeholders, force_stringify = false) ⇒ Object

Expand string with placeholders

Parameters:

  • str (String)


342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
# File 'lib/fluent/plugin/out_condition_checker.rb', line 342

def expand(str, placeholders, force_stringify = false)
  # FIXME: tag情報は使用してなさそうなので, 不必要であれば
  @cleanroom_expander.expand(
      str,
      placeholders['tag'],
      placeholders['time'],
      placeholders['record'],
      placeholders['tag_parts'],
      placeholders['tag_prefix'],
      placeholders['tag_suffix'],
      placeholders['hostname']
  )
rescue => e
  log.warn "record_reformer: failed to expand `#{str}`", :error_class => e.class, :error => e.message
  log.warn_backtrace
  nil
end

#prepare_placeholders(placeholder_values) ⇒ Object

FIXME: 引数返すだけの関数があるので削除



335
336
337
# File 'lib/fluent/plugin/out_condition_checker.rb', line 335

def prepare_placeholders(placeholder_values)
  placeholder_values
end

#preprocess_map(value, force_stringify = false) ⇒ Object

Preprocess record map to convert into ruby string expansion

Parameters:

  • value (Hash|String|Array)

    record map config

  • force_stringify (Boolean) (defaults to: false)

    the value must be string, used for hash key



306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
# File 'lib/fluent/plugin/out_condition_checker.rb', line 306

def preprocess_map(value, force_stringify = false)
  new_value = nil
  if value.is_a?(String)
    if @auto_typecast and !force_stringify
      num_placeholders = value.scan('${').size
      if num_placeholders == 1 and value.start_with?('${') && value.end_with?('}')
        new_value = value[2..-2] # ${..} => ..
      end
    end
    unless new_value
      new_value = "%Q[#{value.gsub('${', '#{')}]" # xx${..}xx => %Q[xx#{..}xx]
    end
  elsif value.is_a?(Hash)
    new_value = {}
    value.each_pair do |k, v|
      new_value[preprocess_map(k, true)] = preprocess_map(v)
    end
  elsif value.is_a?(Array)
    new_value = []
    value.each_with_index do |v, i|
      new_value[i] = preprocess_map(v)
    end
  else
    new_value = value
  end
  new_value
end

#time_value(time) ⇒ Object



298
299
300
# File 'lib/fluent/plugin/out_condition_checker.rb', line 298

def time_value(time)
  Time.at(time)
end