Skip to Content Skip to Search

Caching Key Generator

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

Methods
F
G
N

Class Public methods

new(key_generator)

# File activesupport/lib/active_support/key_generator.rb, line 60
def initialize(key_generator)
  @key_generator = key_generator
  @cache_keys = Concurrent::Map.new
  @ractor_key = nil
end

Instance Public methods

freeze()

# File activesupport/lib/active_support/key_generator.rb, line 66
def freeze
  @ractor_key = "_caching_key_generator_#{object_id}".to_sym
  Ractor[@ractor_key] = @cache_keys
  @cache_keys = nil
  super
end

generate_key(*args)

Returns a derived key suitable for use.

# File activesupport/lib/active_support/key_generator.rb, line 74
def generate_key(*args)
  cache_keys[args.join("|")] ||= @key_generator.generate_key(*args)
end