Module: Redrecord::Model::ClassMethods

Defined in:
lib/redrecord.rb

Instance Method Summary collapse

Instance Method Details

#invalidate_cache_on(fieldname) ⇒ Object



73
74
75
# File 'lib/redrecord.rb', line 73

def invalidate_cache_on(fieldname)
  redrecord_invalidation_fields << fieldname.to_sym 
end

#redis_cache(*fields, &bl) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/redrecord.rb', line 56

def redis_cache(*fields, &bl)
  if block_given?
    old_methods = instance_methods
    class_eval(&bl)
    fields.push(*(instance_methods - old_methods))
  end
  fields = fields.select {|f| instance_method(f).arity < 1 }
  redrecord_cached_fields.push(*fields)
  fields.each do |f|
    aliased_target, punctuation = f.to_s.sub(/([?!=])$/, ''), $1
    define_method("#{aliased_target}_with_cache#{punctuation}") do
      cached_method(f)
    end
    alias_method_chain f, :cache
  end
end

#redrecord_cached_fieldsObject



48
49
50
# File 'lib/redrecord.rb', line 48

def redrecord_cached_fields
  @redrecord_cached_fields ||= [] + (superclass.respond_to?(:redrecord_cached_fields) ? [*superclass.redrecord_cached_fields] : [])
end

#redrecord_invalidation_fieldsObject



52
53
54
# File 'lib/redrecord.rb', line 52

def redrecord_invalidation_fields
  @redrecord_invalidation_fields ||= [] + (superclass.respond_to?(:redrecord_invalidation_fields) ? [*superclass.redrecord_invalidation_fields] : [])
end