class ActiveSupport::CachingKeyGenerator

key_size.
re-executing the key generation process when it’s called using the same salt and
CachingKeyGenerator is a wrapper around KeyGenerator which allows users to avoid

def generate_key(*args)

Returns a derived key suitable for use.
def generate_key(*args)
  @cache_keys[args.join("|")] ||= @key_generator.generate_key(*args)
end

def initialize(key_generator)

def initialize(key_generator)
  @key_generator = key_generator
  @cache_keys = Concurrent::Map.new
end