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

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

      metric_manifest = MetricOperationManifest.new(metric_operation: metric_operation, metric_name: metric_name)

      yield(metric_manifest)

      metric_manifest.validate!

      metrics_manifests << metric_manifest
    end
def register(metric_operation, metric_name)
      metric_operation = metric_operation.to_s
      metric_name = metric_name.to_s
      metric_exists = self.for(metric_operation, metric_name).present?

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

      metric_manifest = MetricOperationManifest.new(metric_operation: metric_operation, metric_name: metric_name)

      yield(metric_manifest)

      metric_manifest.validate!

      metrics_manifests << metric_manifest
    end
Public: Registers a operation for metrics

 metric_operation - a symbol representing the name of the operation involved
 metric_name - a symbol representing the name of the metric involved

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