Module: Catche::Tag

Extended by:
Tag
Included in:
Tag
Defined in:
lib/catche/tag.rb,
lib/catche/tag/object.rb,
lib/catche/tag/resource.rb

Defined Under Namespace

Classes: Object, Resource

Constant Summary collapse

KEY =
'catche'
DIVIDER =
'_'

Instance Method Summary collapse

Instance Method Details

#expire!(*tags) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/catche/tag.rb', line 28

def expire!(*tags)
  expired_keys = []

  tags.each do |tag|
    keys = fetch_tag(tag)
    expired_keys += keys

    keys.each do |key|
      # Expires the cached value
      Catche.adapter.delete key

      # Removes the tag from the tag list in case it's never used again
      Catche.adapter.write(
          stored_key(:keys, key),
          fetch_key(key).delete(stored_key(:tags, tag))
        )
    end

    Catche.adapter.delete stored_key(:tags, tag)
  end

  expired_keys
end

#join(*tags) ⇒ Object



12
13
14
# File 'lib/catche/tag.rb', line 12

def join(*tags)
  tags.flatten.compact.uniq.join(DIVIDER)
end

#tag!(key, *tags) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/catche/tag.rb', line 16

def tag!(key, *tags)
  tags.each do |tag|
    keys      = fetch_tag(tag)
    key_tags  = fetch_key(key)
    tag_key   = stored_key(:tags, tag)
    key_key   = stored_key(:keys, key)

    Catche.adapter.write(tag_key, keys << key)
    Catche.adapter.write(key_key, key_tags << tag_key)
  end
end