Class: Memcacheable::Flusher

Inherits:
Object
  • Object
show all
Defined in:
lib/memcacheable/flusher.rb

Constant Summary collapse

OLD_VAL =
0
NEW_VAL =
1

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(object) ⇒ Flusher

Returns a new instance of Flusher.



8
9
10
# File 'lib/memcacheable/flusher.rb', line 8

def initialize(object)
  self.object = object
end

Instance Attribute Details

#objectObject

Returns the value of attribute object.



3
4
5
# File 'lib/memcacheable/flusher.rb', line 3

def object
  @object
end

Instance Method Details

#changed_criteria_for(which, fields) ⇒ Object



12
13
14
15
16
17
# File 'lib/memcacheable/flusher.rb', line 12

def changed_criteria_for(which, fields)
  fields.inject({}) do |hash, field|
    value = object.previous_changes[field][which] rescue object.send(field)
    hash.merge! field => value
  end
end

#flushObject



19
20
21
22
23
24
25
26
27
28
# File 'lib/memcacheable/flusher.rb', line 19

def flush
  FetchOne.new(object.class, object.id).flush
  object.cached_indexes.each do |fields|
    [OLD_VAL,NEW_VAL].each do |which|
      criteria = changed_criteria_for which, fields
      FetchBy.new(object.class, criteria).flush
      FetchWhere.new(object.class, criteria).flush
    end
  end
end