module MultiJson::OptionsCache

Constants

MAX_CACHE_SIZE

Normally MultiJson is used with a few option sets for both dump/load methods. When options are generated dynamically though, every call would cause a cache miss and the cache would grow indefinitely. To prevent this, we just reset the cache every time the number of keys outgrows 1000.

Public Instance Methods

fetch(type, key, &block) click to toggle source
# File lib/multi_json/options_cache.rb, line 10
def fetch(type, key, &block)
  cache = instance_variable_get("@#{type}_cache")
  cache.key?(key) ? cache[key] : write(cache, key, &block)
end
reset() click to toggle source
# File lib/multi_json/options_cache.rb, line 5
def reset
  @dump_cache = {}
  @load_cache = {}
end

Private Instance Methods

write(cache, key) { || ... } click to toggle source
# File lib/multi_json/options_cache.rb, line 24
def write(cache, key)
  cache.clear if cache.length >= MAX_CACHE_SIZE
  cache[key] = yield
end