class Sentry::Rails::Tracing::ActiveSupportSubscriber

def self.operation_name(event_name)

def self.operation_name(event_name)
  case
  when READ_EVENT_NAMES.include?(event_name)
    "cache.get"
  when WRITE_EVENT_NAMES.include?(event_name)
    "cache.put"
  when REMOVE_EVENT_NAMES.include?(event_name)
    "cache.remove"
  when FLUSH_EVENT_NAMES.include?(event_name)
    "cache.flush"
  else
    "other"
  end
end

def self.subscribe!

def self.subscribe!
  subscribe_to_event(EVENT_NAMES) do |event_name, duration, payload|
    record_on_current_span(
      op: operation_name(event_name),
      origin: SPAN_ORIGIN,
      start_timestamp: payload[START_TIMESTAMP_NAME],
      description: payload[:store],
      duration: duration
    ) do |span|
      span.set_data("cache.key", [*payload[:key]].select { |key| Utils::EncodingHelper.valid_utf_8?(key) })
      span.set_data("cache.hit", payload[:hit] == true) # Handle nil case
    end
  end
end