====== ORMs ======
Ramaze does not come bundled with an ORM (Object-Relational Mapper), you are free to use whichever one you prefer. We suggest Sequel =)
===== Ramaze::Store =====
Built into Ramaze, Ramaze::Store leverages YAML and Pstore to provide a persistant store for ruby objects.
require 'ramaze/store/default'
DB = Ramaze::Store::Default.new('yaml.db')
===== ActiveRecord =====
require 'active_record'
ActiveRecord::Base.establish_connection :adapter => 'sqlite3', :database => 'db.sqlite'
ActiveRecord::Base.establish_connection(
:adapter => "mysql",
:host => "host",
:username => "user",
:password => "pass",
:database => "dbname"
)
class NewItem < ActiveRecord::Migration
def self.up
create_table :items do |t|
t.column :name, :string
t.column :description, :text
t.column :active, :boolean
t.column :created_at, :datetime
end
end
def self.down
drop_table :items
end
end
NewItem.up
class ArItem < ActiveRecord::Base
set_table_name 'items'
end
===== Og =====
require 'og'
$DBG = true
class Entry
property :created, Time
property :updated, Time
property :title, String
property :content, String
def initialize title, content
@created=Time.now
@updated=Time.now
@title=title
@content=content
end
end
Og.setup :evolve_schema => :full, :store => :sqlite
===== Datamapper =====
[[http://datamapper.org/getting_started.html|Datamapper]] is another new kid on the block when it comes to Ruby ORMs. It's based on the datamapper design pattern and takes cues from both Og and ActiveRecord.
require 'data_mapper'
DataMapper::Database.setup({
:adapter => 'mysql',
:host => 'localhost',
:username => 'user',
:password => 'pass',
:database => 'dbname'
})
class Post < DataMapper::Base
property :title, :string
property :body, :text
property :created_at, :datetime
end
database.save(Post)
===== Sequel =====
For more information, check out the [[http://sequel.rubyforge.org|RDoc]], [[http://sequel.rubyforge.org/files/sequel_core/doc/cheat_sheet_rdoc.html|CheatSheet]].
require 'sequel'
DB = Sequel.sqlite 'db.sqlite'
DB = Sequel('mysql://user:pass@host:port/dbname')
class Author < Sequel::Model(:authors)
set_schema do
primary_key :id
varchar :name
end
end
Author.create_table
Author.create :name => 'Michael Crichton'
===== Kansas =====
===== DBI =====
DBI is a low-level database interface library for Ruby. You use SQL directly to access your data, and the results are returned as Ruby objects. DBI is specifically not an ORM; [[http://purepistos.net/m4dbi|M4DBI]] is an ORM built on top of DBI.
===== DBrb =====
[[http://www.kuriositaet.de/ruby/dbrb/|DBrb]] is a wrapper to facilitate working with Ruby DBI. The intention is to make the most commonly used DB functionality (as determined by me) easy and intuitive to use.