Module: Observed::Reporter::ReportFormatting

Includes:
Configurable
Included in:
BuiltinPlugins::File, BuiltinPlugins::Stdout
Defined in:
lib/observed/reporter/report_formatting.rb

Overview

The module to equip an observer with a ‘formatter` to format the data being reported. The `formatter` is just a proc and is able to be configured via an attribute.

class YourObserver < Observed::Reporter

include Observed::Reporter::Configurable
include Observed::Reporter::ReportFormatting

attribute :format, default: -> tag, time, data { "#{Time.at(time)} #{tag} #{data}" }

def report(tag, time, data)
  formatted_data = format_report(tag, time, data)
  # The output of your choice
end

end

observer = YourObserver.new(format: -> tag, time, data { “The data being reported: #tag #time #data” }) observer.report(‘test’, Time.now, 1) #=> outputs “#Time.at(Time.now) test :data=>1”

Instance Method Summary collapse

Methods included from Configurable

#configure, #get_attribute_value, #has_attribute_value?, included, #initialize

Instance Method Details

#format_report(tag, time, data) ⇒ Object

Format the data being reported. The data includes 3 parameters: ‘tag`, `time` and `data`.

Parameters:

  • tag (String)
  • time (Time)
  • data (Hash)


43
44
45
46
47
48
49
50
51
52
53
# File 'lib/observed/reporter/report_formatting.rb', line 43

def format_report(tag, time, data)
  num_params = format.parameters.size
  case num_params
  when 3
    format.call(tag, time, data)
  when 4
    format.call(tag, time, data, Observed::Hash::Fetcher.new(data))
  else
    fail "Number of parameters for the function for the key :format must be 3 or 4, but was #{num_params}(#{format.parameters}"
  end
end