47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# 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
|