Method: ActiveSupport::Cache::MonetaStore#fetch_multi

Defined in:
lib/active_support/cache/moneta_store.rb

#fetch_multi(*names) ⇒ Object

Raises:

  • (ArgumentError)


45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/active_support/cache/moneta_store.rb', line 45

def fetch_multi(*names)
  raise ArgumentError, "Missing block: `Cache#fetch_multi` requires a block." \
    unless block_given?

  options = names.extract_options!
  options = merged_options(options)

  instrument :read_multi, names, options do |payload|
    read_multi_entries(names, options).tap do |results|
      payload[:hits] = results.keys
      payload[:super_operation] = :fetch_multi

      writes = {}

      (names - results.keys).each do |name|
        results[name] = writes[name] = yield(name)
      end

      write_multi writes, options
    end
  end
end