Class YamlStore
In: lib/storage/yamlstore.rb
Parent: Store
YamlStore
Store
dot/f_53.png

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.

Methods

check   delete   each   get   new   put   save  

Public Class methods

[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 if an object is in the database by its id.

oid
is the id to use in the search.
return
true or false

[Source]

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

Deletes an object from the database.

oid
is the id to to be deleted.
return
Undefined.

[Source]

# File lib/storage/yamlstore.rb, line 69
  def delete(oid)
    @db.delete(oid)
  end

Iterate through all objects

yield
Each object in database to block of caller.

[Source]

# File lib/storage/yamlstore.rb, line 89
  def each(&blk)
    @db.each_value &blk
  end

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.

[Source]

# File lib/storage/yamlstore.rb, line 76
  def get(oid)
    @db[oid]
  end

Adds a new object to the database.

obj
is a reference to object to be added
return
Undefined.

[Source]

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

Save the world

return
Undefined.

[Source]

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

[Validate]