Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- define_method :"bulk_get_#{method_name}" do |objects, &block|
- keys_objects_map = objects.inject({}) do |h, o|
- h[o.method_cache_key_for(method_name)] = o
- h
- end
- keys = keys_objects_map.keys
- result = $dalli.get_multi(keys)
- missing_keys = keys - result.keys
- if missing_keys.any?
- if block.nil?
- # Call the object.send(method_name) directly
- missing_keys.each do |key|
- result[key] = keys_objects_map[key].send(method_name)
- end
- else
- missing_ids = missings_keys.collect {|key| keys_objects_map[key].id}
- block.call(missing_ids).each do |key, value|
- result[key] = v
- end
- end
- end
- objects.collect {|o| result[o.method_cache_key_for(method_name)]}
- end
Add Comment
Please, Sign In to add comment