module Moneta::EachKeySupport

This provides an each_key implementation that works in most cases. @api private

Public Class Methods

included(base) click to toggle source
# File lib/moneta/each_key_support.rb, line 23
def self.included(base)
  base.supports(:each_key) if base.respond_to?(:supports)
end

Public Instance Methods

each_key() { |key| ... } click to toggle source
# File lib/moneta/each_key_support.rb, line 5
def each_key
  return enum_for(:each_key) unless block_given?

  if @backend.respond_to?(:each_key)
    @backend.each_key { |key| yield key }
  elsif @backend.respond_to?(:keys)
    if keys = @backend.keys
      keys.each { |key| yield key }
    end
  elsif @backend.respond_to?(:each)
    @backend.each { |key, _| yield key }
  else
    raise ::NotImplementedError, "No enumerable found on backend"
  end

  self
end