Guest User

Untitled

a guest
Nov 18th, 2018
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.73 KB | None | 0 0
  1. define_method :"bulk_get_#{method_name}" do |objects, &block|
  2. keys_objects_map = objects.inject({}) do |h, o|
  3. h[o.method_cache_key_for(method_name)] = o
  4. h
  5. end
  6.  
  7. keys = keys_objects_map.keys
  8. result = $dalli.get_multi(keys)
  9. missing_keys = keys - result.keys
  10. if missing_keys.any?
  11. if block.nil?
  12. # Call the object.send(method_name) directly
  13. missing_keys.each do |key|
  14. result[key] = keys_objects_map[key].send(method_name)
  15. end
  16. else
  17. missing_ids = missings_keys.collect {|key| keys_objects_map[key].id}
  18. block.call(missing_ids).each do |key, value|
  19. result[key] = v
  20. end
  21. end
  22. end
  23. objects.collect {|o| result[o.method_cache_key_for(method_name)]}
  24. end
Add Comment
Please, Sign In to add comment