def get_some(keys, opts = {})
keys = keys.collect {|key| key.to_s}
records = opts[:disable] ? {} : self.multi_get(keys, opts)
if opts[:validation]
records.delete_if do |key, value|
not opts[:validation].call(key, value)
end
end
keys_to_fetch = keys - records.keys
method = opts[:overwrite] ? :set : :add
if keys_to_fetch.any?
yield(keys_to_fetch).each do |key, value|
begin
self.send(method, key, value, opts) unless opts[:disable] or opts[:disable_write]
rescue Memcache::Error => e
raise if opts[:strict_write]
$stderr.puts "Memcache error in get_some: #{e.class} #{e.to_s} on key '#{key}' while storing value: #{value}"
end
records[key] = value
end
end
records
end