class Ruboty::Brains::Leveldb

Constants

KEY

Public Class Methods

new() click to toggle source
Calls superclass method
# File lib/ruboty/brains/leveldb.rb, line 13
def initialize
  super
  @thread = Thread.new { sync }
  @thread.abort_on_exception = true
end

Public Instance Methods

data() click to toggle source
# File lib/ruboty/brains/leveldb.rb, line 19
def data
  @data ||= pull || {}
end

Private Instance Methods

db() click to toggle source
# File lib/ruboty/brains/leveldb.rb, line 25
def db
  @db ||= LevelDB::DB.new(db_file)
end
db_file() click to toggle source
# File lib/ruboty/brains/leveldb.rb, line 29
def db_file
  ENV["LEVELDB_PATH"] || "ruboty.ldb"
end
interval() click to toggle source
# File lib/ruboty/brains/leveldb.rb, line 33
def interval
  (ENV["LEVELDB_SAVE_INTERVAL"] || 5).to_i
end
pull() click to toggle source
# File lib/ruboty/brains/leveldb.rb, line 37
def pull
  if str = db[KEY]
    Marshal.load(str)
  end
end
push() click to toggle source
# File lib/ruboty/brains/leveldb.rb, line 43
def push
  db[KEY] = Marshal.dump(data)
end
sync() click to toggle source
# File lib/ruboty/brains/leveldb.rb, line 47
def sync
  loop do
    wait
    push
  end
end
wait() click to toggle source
# File lib/ruboty/brains/leveldb.rb, line 54
def wait
  sleep(interval)
end