Method: Decidim::MetricRegistry#register

Defined in:
lib/decidim/metric_registry.rb

#register(metric_name) {|metric_manifest| ... } ⇒ Object

Public: Registers a metric for calculations

metric_name - a symbol representing the name of the metric

Returns nothing. Raises an error if there’s already a metric registered with that metric name.

Yields:

  • (metric_manifest)
[View source]

32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/decidim/metric_registry.rb', line 32

def register(metric_name)
  metric_name = metric_name.to_s
  metric_exists = self.for(metric_name).present?

  if metric_exists
    raise(
      MetricAlreadyRegistered,
      "There's a metric already registered with the name `:#{metric_name}`, must be unique"
    )
  end

  metric_manifest = MetricManifest.new(metric_name: metric_name)

  yield(metric_manifest)

  metric_manifest.validate!

  metrics_manifests << metric_manifest
end