storage.rb 599 Bytes
module DsAdmin::Storage
  include Enumerable

  DsAdmin::Storage.autoload(:Config, 'storage/config')
  DsAdmin::Storage.autoload(:Ldap, 'storage/ldap')
  DsAdmin::Storage.autoload(:Mysql, 'storage/mysql')

  attr_reader :config

  def initialize(config)
    @config = config
  end

  def each(&block)
    read.each(&block)
  end

  def read
    raise "#{self.class}: read not implemented"
  end

  ##
  # write has to return the storage id of the written
  # entry.
  #
  def write(model)
    raise "#{self.class}: write not implemented"
  end

  def config_key
    self.class.to_s.to_sym
  end
end