You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: base_adapter.rb
    path of file: ./repos/yabeda/lib/yabeda
    
    the code of the file until where you have to start completion: # frozen_string_literal: true

module Yabeda
    
    def register!(metric)
      case metric
      when Counter   then register_counter!(metric)
      when Gauge     then register_gauge!(metric)
      when Histogram then register_histogram!(metric)
      when Summary   then register_summary!(metric)
      else raise "#{metric.class} is unknown metric type"
      end