class YamlStore

The YamlStore class manages access to all object storage.

db

is a handle to the database implementation (in this iteration a hash).

dbtop

stores the highest id used in the database.

Public Class Methods

new(dbfile) click to toggle source
# File lib/storage/yamlstore.rb, line 27
  def initialize(dbfile)
    super()
    @dbfile = "#{dbfile}.yaml"

    # check if database exists and build it if not
    build_database
    log.info "Loading world..."
    @db = {}

    # load the yaml database and sets @dbtop to highest object id
    YAML::load_file(@dbfile).each do |o|
      @dbtop = o.id if o.id > @dbtop
      @db[o.id]=o
    end

    log.info "Database '#{@dbfile}' loaded...highest id = #{@dbtop}."
#    log.debug @db.inspect
  rescue
    log.fatal "Error loading database"
    log.fatal $!
    raise
  end

Public Instance Methods

check(oid) click to toggle source

Check if an object is in the database by its id.

oid

is the id to use in the search.

return

true or false

# File lib/storage/yamlstore.rb, line 83
def check(oid)
  @db.has_key? oid
end
delete(oid) click to toggle source

Deletes an object from the database.

oid

is the id to to be deleted.

return

Undefined.

# File lib/storage/yamlstore.rb, line 69
def delete(oid)
  @db.delete(oid)
end
each(&blk) click to toggle source

Iterate through all objects

yield

Each object in database to block of caller.

# File lib/storage/yamlstore.rb, line 89
def each(&blk)
  @db.each_value &blk
end
get(oid) click to toggle source

Finds an object in the database by its id.

oid

is the id to use in the search.

return

Handle to the object or nil.

# File lib/storage/yamlstore.rb, line 76
def get(oid)
  @db[oid]
end
put(obj) click to toggle source

Adds a new object to the database.

obj

is a reference to object to be added

return

Undefined.

# File lib/storage/yamlstore.rb, line 61
def put(obj)
  @db[obj.id] = obj
  obj # return really ought not be checked
end
save() click to toggle source

Save the world

return

Undefined.

# File lib/storage/yamlstore.rb, line 52
def save
  File.open(@dbfile,'w') do |f|
    YAML::dump(@db.values,f)
  end
end