AbstractStrategyStore
Store well suited for page caching.
# File lib/merb-cache/stores/strategy/page_store.rb, line 43 def delete(dispatch, parameters = {}) if writable?(dispatch, parameters) @stores.map {|s| s.delete(normalize(dispatch), {})}.any? end end
# File lib/merb-cache/stores/strategy/page_store.rb, line 49 def delete_all! @stores.map {|s| s.delete_all!}.all? end
# File lib/merb-cache/stores/strategy/page_store.rb, line 37 def exists?(dispatch, parameters = {}) if writable?(dispatch, parameters) @stores.capture_first {|s| s.exists?(normalize(dispatch), {})} end end
# File lib/merb-cache/stores/strategy/page_store.rb, line 31 def fetch(dispatch, parameters = {}, conditions = {}, &blk) if writable?(dispatch, parameters, conditions) read(dispatch, parameters) || @stores.capture_first {|s| s.fetch(normalize(dispatch), data || dispatch.body, {}, conditions, &blk)} end end
# File lib/merb-cache/stores/strategy/page_store.rb, line 53 def normalize(dispatch) key = dispatch.request.uri.split('?').first key << "index" if key =~ /\/$/ key << ".#{dispatch.content_type}" unless key =~ /\.\w{2,6}/ key end
# File lib/merb-cache/stores/strategy/page_store.rb, line 60 def query_string_present?(dispatch) dispatch.request.env["REQUEST_URI"] == dispatch.request.uri end
# File lib/merb-cache/stores/strategy/page_store.rb, line 15 def read(dispatch, parameters = {}) nil end
# File lib/merb-cache/stores/strategy/page_store.rb, line 4 def writable?(dispatch, parameters = {}, conditions = {}) if Merb::Controller === dispatch && dispatch.request.method == :get && !dispatch.request.uri.nil? && !dispatch.request.uri.empty? && !conditions.has_key?(:if) && !conditions.has_key?(:unless) && query_string_present?(dispatch) @stores.any? {|s| s.writable?(normalize(dispatch), parameters, conditions)} else false end end
# File lib/merb-cache/stores/strategy/page_store.rb, line 19 def write(dispatch, data = nil, parameters = {}, conditions = {}) if writable?(dispatch, parameters, conditions) @stores.capture_first {|s| s.write(normalize(dispatch), data || dispatch.body, {}, conditions)} end end
# File lib/merb-cache/stores/strategy/page_store.rb, line 25 def write_all(dispatch, data = nil, parameters = {}, conditions = {}) if writable?(dispatch, parameters, conditions) @stores.map {|s| s.write_all(normalize(dispatch), data || dispatch.body, {}, conditions)}.all? end end
Generated with the Darkfish Rdoc Generator 2.