ROM is an experimental ruby ORM.
Project is being rebuilt from scratch. Watch this space.
require 'rom'
require 'rom/adapter/sequel'
rom = ROM.setup(sqlite: "sqlite::memory")
rom.sqlite.connection.run(
<<-SQL
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name STRING,
age INTEGER
)
SQL
)
rom.relations do
register(:users) do
def by_name(name)
where(name: name)
end
def adults
where { age >= 18 }
end
end
end
rom.mappers do
define(:users) do
model(name: 'User')
end
end
# accessing registered relations
users = rom.relations.users
users.insert(name: "Joe", age: 17)
users.insert(name: "Jane", age: 18)
puts users.by_name("Jane").adults.to_a.inspect
# => [{:id=>2, :name=>"Jane", :age=>18}]
# reading relations using defined mappers
puts rom.read(:users).by_name("Jane").adults.to_a.inspect
# => [#<User:0x007fdba161cc48 @id=2, @name="Jane", @age=18>]
Here's a top-level TODO:
- Add redis adapter (just to prove that stuff works with different adapters)
- Add a couple of RA operations (there's just Join now)
- Release 0.3.0.alpha \o/
Please refer to issues for details
- Ruby Object Mapper mailing list
See LICENSE
file.