module RBase

Constants

LANGUAGE_RUSSIAN_DOS
LANGUAGE_RUSSIAN_WINDOWS

Public Class Methods

create_table(name, options = {}) { |schema| ... } click to toggle source

Create new XBase table file. Table file name will be equal to name with “.dbf” suffix.

For list of available options see RBase::Table.create documentation.

Example

RBase.create_table 'people' do |t|
  t.column :name, :string, :size => 30
  t.column :birthdate, :date
  t.column :active, :boolean
  t.column :tax, :integer, :size => 10, :decimal => 2
end

For documentation on column parameters see RBase::Schema#column documentation.

# File lib/rbase/builder.rb, line 22
def self.create_table(name, options = {})
  options[:language] ||= LANGUAGE_RUSSIAN_WINDOWS
  
  schema = Schema.new
  yield schema if block_given?
  
  Table.create name, schema, options
end

Public Instance Methods

serialize() click to toggle source
# File lib/rbase/record.rb, line 98
def serialize
  if new_record?
    @data = deleted? ? '*' : ' '
    @data << @table.columns.collect do |column|
      column.pack(@values_changed[column.name])
    end.join
  else
    @data[0, 1] = deleted? ? '*' : ' '
    @values_changed.each do |k, v|
      column = @table.column(k)
      raise UnknownColumnError.new(k) unless column
      begin
        @data[column.offset, column.size] = column.pack(v)
      rescue Object => e
        raise InvalidValueError.new(column, v)
      end
      @values_cached[k] = v
    end
  end
  @data
end

Protected Instance Methods

get_value(name) click to toggle source

Returns value of specified column

# File lib/rbase/record.rb, line 123
def get_value(name)
  name = name.to_s.upcase.to_sym
  return @values_changed[name] if @values_changed.has_key?(name)
  return nil if new_record?
  column = @table.column(name)
  raise UnknownColumnError.new(name) unless column
  @values_cached[name] ||= column.unpack(@data[column.offset, column.size])
end
set_value(name, value) click to toggle source

Sets value of specified column.

# File lib/rbase/record.rb, line 133
def set_value(name, value)
  name = name.to_s.upcase.to_sym
  raise UnknownColumnError.new(name) unless @table.column(name)
  @values_changed[name] = value
end