Sha256: 67c5d4326d77ccb9d6cbb692b865abe87459ed8cc2d7fd79236f6f55f9ffee48

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 KB

Contents

# frozen_string_literal: true

require "singleton"

module Rack
  class ECG
    class CheckRegistry
      # Raised when a check didn't exist during lookup
      CheckNotRegistered = Class.new(StandardError)
      include Singleton

      # Constructs the singleton instance of the registry
      def initialize
        @registry = {}
      end

      # Register a check class by name
      #
      # @param [Symbol] name Desired check name
      # @param [Class] check_class Class implementing check functionality
      def register(name, check_class)
        @registry[name] = check_class
      end

      # Fetches the registered check class by name
      #
      # @param [Symbol] name Registered check name
      # @raise [CheckNotRegistered] if the named check has not been registered
      def lookup(name)
        @registry.fetch(name) { raise CheckNotRegistered, "Check '#{name}' is not registered" }
      end

      # (see #lookup)
      def self.lookup(name)
        instance.lookup(name)
      end

      # (see #register)
      def self.register(name, check_class)
        instance.register(name, check_class)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rack-ecg-0.2.0 lib/rack/ecg/check_registry.rb