class ProcessMetrics::Base
Attributes
data[RW]
parent_uuid[RW]
uuid[RW]
Public Class Methods
new(name, parent=nil)
click to toggle source
# File lib/process_metrics/base.rb, line 8 def initialize(name, parent=nil) @uuid = SecureRandom.uuid @parent_uuid = parent ? parent.uuid : nil @data = nil @name = name @started_at = Time.now @finished_at = nil end
work(name, parent=nil, &block)
click to toggle source
# File lib/process_metrics/base.rb, line 44 def self.work(name, parent=nil, &block) metric = ProcessMetrics::Base.new name, parent result = nil begin result = block.call metric metric.finish ensure Thread.new(metric) { |_metric| _metric.save }.join end result end
Public Instance Methods
attributes()
click to toggle source
# File lib/process_metrics/base.rb, line 17 def attributes { uuid: @uuid, parent_uuid: @parent_uuid, name: @name, data: YAML::dump(@data), started_at: @started_at ? @started_at.strftime("%Y-%m-%d %H:%M:%S.%N") : nil, finished_at: @finished_at ? @finished_at.strftime("%Y-%m-%d %H:%M:%S.%N") : nil } end
finish()
click to toggle source
# File lib/process_metrics/base.rb, line 28 def finish @finished_at = Time.now end
measure(name, &block)
click to toggle source
# File lib/process_metrics/base.rb, line 40 def measure(name, &block) work(name, self, &block) end
save()
click to toggle source
# File lib/process_metrics/base.rb, line 36 def save ProcessMetrics.config.persistence.save(self) end
to_s()
click to toggle source
# File lib/process_metrics/base.rb, line 56 def to_s self.class.name + " " + attributes.to_s end