class Ocache::Proxy
Public Class Methods
new(module_target, key_name=nil, module_options={})
click to toggle source
# File lib/ocache/proxy.rb, line 4 def initialize(module_target, key_name=nil, module_options={}) @module_target = module_target if cache_options?(key_name) @module_options = key_name else @key_name = key_name @module_options = module_options end end
Private Instance Methods
cache_instance_attributes?(possible_object)
click to toggle source
# File lib/ocache/proxy.rb, line 44 def cache_instance_attributes?(possible_object) possible_object.respond_to?(:id) || possible_object.respond_to?(:created_at) || possible_object.respond_to?(:updated_at) end
cache_options?(possible_options)
click to toggle source
# File lib/ocache/proxy.rb, line 38 def cache_options?(possible_options) %w(force expires_in race_condition_ttl raw compress compress_threshold namespace).any? { |option| possible_options.inspect.include? option } end
expand_cache_key(arguments)
click to toggle source
# File lib/ocache/proxy.rb, line 48 def expand_cache_key(arguments) ::ActiveSupport::Cache.expand_cache_key(arguments) end
generate_cache_key()
click to toggle source
# File lib/ocache/proxy.rb, line 26 def generate_cache_key if cache_instance_attributes?(@module_target) key_module_target = @module_target.cache_key elsif @module_target.respond_to?(:model_name) key_module_target = @module_target.model_name.cache_key else key_module_target = @module_target end "#{key_module_target}/#{@method_target}/#{expand_cache_key(@method_arguments)}".chomp('/') end
method_missing(method_target, *method_arguments)
click to toggle source
# File lib/ocache/proxy.rb, line 15 def method_missing(method_target, *method_arguments) @method_target = method_target @method_arguments = method_arguments @key_name = generate_cache_key unless @key_name ::Rails.cache.fetch(@key_name, @module_options) do @module_target.__send__(method_target, *method_arguments) end end