@private
# File lib/aws/core/cacheable.rb, line 23 def self.included base base.extend Naming unless base.respond_to?(:service_ruby_name) end
@private
# File lib/aws/core/cacheable.rb, line 47 def retrieve_attribute attr, &block if cache = AWS.response_cache if cache.resource_cache.cached?(cache_key, attr.name) return cache.resource_cache.get(cache_key, attr.name) end cache.select(*attr.request_types).each do |response| if attributes = attributes_from_response(response) cache.resource_cache.store(cache_key, attributes) return attributes[attr.name] if attributes.key?(attr.name) end end end response = yield if attributes = attributes_from_response(response) if cache = AWS.response_cache cache.resource_cache.store(cache_key, attributes) end attributes[attr.name] if attributes.key?(attr.name) else raise NoData.new("no data in #{response.request_type} response") end end
@private
# File lib/aws/core/cacheable.rb, line 35 def cache_key @cache_key ||= begin endpoint_method = self.class.service_ruby_name + "_endpoint" config.signer.access_key_id + ":" + config.send(endpoint_method) + ":" + self.class.name + ":" + local_cache_key end end
@private
# File lib/aws/core/cacheable.rb, line 29 def local_cache_key raise NotImplementedError end