Standalone driver ==
This directory contains the a ruby interface to monetdb5 written in pure ruby.
lib/MonetDB.rb lib/MonetDBConnection.rb lib/MonetDBStatements.rb lib/MonetDBData.rb lib/MonetDBExceptions.rb lib/hasher.rb lib/demo.rb: demo application how to interact with the database
ruby-monetdb-sql-0.1.gemspec: make file for rubygems
doc/: rubydoc in HTML format
Installation ==
The standalone monetdb driver can be installed using the RubyGems Package Manager.
First build a gem file starting from the gemspec configuration:
$ gem build ruby-monetdb-sql-0.1.gemspec
Then install with the command:
$ gem install ruby-monetdb-sql-0.1.gem
Usage ==
To use the standalone driver import the ‘MonetDB’ class and ‘rubygems’ (in case you installed it using gems).
A typical sequence of events is as follows: Invoke query using the database handle to send the statement to the server and get back a result set object.
A result set object has methods for fetching rows, moving around in the result set, obtaining column metadata, and releasing the result set. Use a row fetching method such as fetch_row or an iterator such as each to access the rows of the result set. If you want a count of the number of rows in the result set: invoke ‘num_rows’ method. Invoke ‘free’ to release the result set.
Example ==
require ‘MonetDB’
db = MonetDB.new db.connect(user = “monetdb”, passwd = “monetdb”, lang = “sql”, host=“127.0.0.1”, port = 50000, db_name = “demo”, auth_type = “SHA1”)
# set type_cast=true to enable MonetDB to Ruby type mapping res = db.query(“SELECT * from tables;”, type_cast = false)
#puts res.debug_columns_type
puts “Number of rows returned: ” + res.num_rows.to_s puts “Number of fields: ” + res.num_fields.to_s
# Get the columns’ name col_names = res.name_fields
# Iterate over the record set and retrieve on row at a time puts res.fetch while row = res.fetch do
printf "%s \n", row
end
# Release the result set. res.free
# Disconnect from server db.close
See lib/demo.rb and the MonetDBDatar class documentation for more examples.
ActiveRecord connector adapter ==
Active Record connects business objects and database tables to create a persistable domain model where logic and data are presented in one wrapping. It‘s an implementation of the object-relational mapping (ORM) pattern.
Required files:
adapter/lib/active_record/monetdb_adapter.rb
Usage example follows: require ‘active_record’
ActiveRecord::Base.logger = Logger.new(STDERR) ActiveRecord::Base.colorize_logging = true
ActiveRecord::Base.establish_connection(
:adapter => "monetdb",
:host => "localhost",
:database => "demo"
)
# Create a new table class AddTests < ActiveRecord::Migration
def self.up
create_table :tests do |table|
table.column :name, :string
table.column :surname, :string
end
end
def self.down
drop_table :tests
end
end
AddTests.up
# Migration: add a column name with a default value class AddAge < ActiveRecord::Migration
def self.up
add_column :tests, :age, :smallint, :default => 18
end
def self.down
remove_column :tests, :age
end
end
class Test < ActiveRecord::Base end
# Insert an entry in the table Test.create(:name => ‘X’, :surname => ‘Y’)
# add a column AddAge.up
# return the first result of the query SELECT * from tables row = Test.find(:first) printf “SELECT * from tests LIMIT 1:n” printf “Name: %s, Surname: %s, Age: %sn”, row.name, row.surname, row.age
# Drop the table AddTests.down
Rubygem ==
The standalone ruby driver can be distributed as a ruby gem. A gem file is already available; however, it can be generated starting from the ruby-monetdb-sql-0.1.gemspec file:
$ gem build ruby-monetdb-sql-0.1.gemspec
To install the file run the command:
$ gem install ruby-monetdb-sql-0.1.gem
Documentation in ri and html format will be generated and installed as well