class Blackbeard::MetricData::UidGenerator
Public Class Methods
new(metric_data)
click to toggle source
# File lib/blackbeard/metric_data/uid_generator.rb, line 6 def initialize(metric_data) @metric = metric_data.metric @group = metric_data.group @cohort = metric_data.cohort end
Public Instance Methods
uid()
click to toggle source
# File lib/blackbeard/metric_data/uid_generator.rb, line 12 def uid db.hash_get(lookup_hash, lookup_field) || generate_uid end
Private Instance Methods
generate_uid()
click to toggle source
# File lib/blackbeard/metric_data/uid_generator.rb, line 29 def generate_uid uid = db.increment("metric_data_next_uid") # write and read to avoid race conditional writes db.hash_key_set_if_not_exists(lookup_hash, lookup_field, uid) db.hash_get(lookup_hash, lookup_field) end
lookup_field()
click to toggle source
# File lib/blackbeard/metric_data/uid_generator.rb, line 22 def lookup_field lookup_field = "metric-#{@metric.id}" lookup_field += "::group-#{@group.id}" if @group lookup_field += "::group-#{@cohort.id}" if @cohort lookup_field end
lookup_hash()
click to toggle source
# File lib/blackbeard/metric_data/uid_generator.rb, line 18 def lookup_hash "metric_data_keys" end