Class: Persistent::Cache

Inherits:
Object
  • Object
show all
Defined in:
lib/persistent-cache.rb,
lib/persistent-cache/version.rb

Constant Summary collapse

FRESH =

Fresh is 1 day less than the bacula default job retention time. If this is configured differently, FRESH should be updated as well.

15465600
DB_TABLE =
"key_value"
VERSION =
"0.0.8"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(database_details, fresh = FRESH) ⇒ Cache

Returns a new instance of Cache.



12
13
14
15
16
17
# File 'lib/persistent-cache.rb', line 12

def initialize(database_details, fresh = FRESH)
  @database_details = database_details
  @db_handle = connect_to_database
  @db_handle.busy_timeout = 30000
  @fresh = fresh
end

Instance Attribute Details

#database_detailsObject

Returns the value of attribute database_details.



10
11
12
# File 'lib/persistent-cache.rb', line 10

def database_details
  @database_details
end

Instance Method Details

#[](key) ⇒ Object



27
28
29
# File 'lib/persistent-cache.rb', line 27

def [](key)
  lookup_key(Marshal.dump(key))
end

#[]=(key, value) ⇒ Object



19
20
21
22
23
24
25
# File 'lib/persistent-cache.rb', line 19

def []=(key, value)
  if value.nil?
    delete_entry(Marshal.dump(key))
  else
    save_key_value_pair(Marshal.dump(key), Marshal.dump(value))
  end
end

#clearObject



47
48
49
# File 'lib/persistent-cache.rb', line 47

def clear
  @db_handle.execute("DELETE FROM #{DB_TABLE}")
end

#each(&block) ⇒ Object



31
32
33
34
35
# File 'lib/persistent-cache.rb', line 31

def each(&block)
  keys.each do |key|
    yield key, lookup_key(Marshal.dump(key))
  end
end

#keysObject



41
42
43
44
45
# File 'lib/persistent-cache.rb', line 41

def keys
  @db_handle.execute("SELECT key FROM #{DB_TABLE}").collect { |key|
    Marshal.load(key[0])
  }
end

#sizeObject



37
38
39
# File 'lib/persistent-cache.rb', line 37

def size
  @db_handle.execute("SELECT value FROM #{DB_TABLE}").size
end