lib/steep/services/path_assignment.rb



module Steep
  module Services
    class PathAssignment
      attr_reader :index, :max_index, :cache

      def initialize(index:, max_index:)
        @index = index
        @max_index = max_index
        @cache = {}
      end

      def self.all
        new(index: 0, max_index: 1)
      end

      def =~(path)
        (cache[path] ||= self.class.index_for(path: path.to_s, max_index: max_index)) == index
      end

      alias === =~

      def self.index_for(path:, max_index:)
        Digest::MD5.hexdigest(path).hex % max_index
      end
    end
  end
end