module HalApi::Representer::Caches
expects underlying model to have filename, class, and id attributes
Public Instance Methods
cache()
click to toggle source
# File lib/hal_api/representer/caches.rb, line 34 def cache Rails.cache end
cache_key(obj, options)
click to toggle source
This isn’t working, comment out this optimization def create_representation_with(doc, options, format)
cache.fetch(cache_key(represented, options), cache_options) do response = super(doc, options, format) response = HalApi::Representer::Caches::SerializedJson.new(JSON.dump(response)) if (options[:to_] == :json) response end
end
# File lib/hal_api/representer/caches.rb, line 25 def cache_key(obj, options) key_components = [cache_key_class_name] key_components << (obj.try(:is_root_resource) ? 'r' : 'l') key_components << obj key_components << options.select{|k,v| Array(options['_keys']).include?(k.to_s)} ActiveSupport::Cache.expand_cache_key(key_components) end
cache_key_class_name()
click to toggle source
# File lib/hal_api/representer/caches.rb, line 38 def cache_key_class_name self.class.name.underscore.gsub(/_representer$/, "") end
cache_options()
click to toggle source
# File lib/hal_api/representer/caches.rb, line 42 def cache_options {compress: true, race_condition_ttl: 10, expires_in: 1.hour} end
to_json(options={})
click to toggle source
Pass in an option for the format this is going ‘to_` used in caching the final string format of the obj rather than the intermediary `Hash`, a modest accelerant
Calls superclass method
# File lib/hal_api/representer/caches.rb, line 11 def to_json(options={}) options[:to_] = :json super(options) end