Rubernate
{Dynamic Persistence
for Dynamic Language}
Overview
Rubernate is an object-oriented storage for Ruby objects based on relational database.
Rubernate provides an ability to create persistent object hierarchies with minimal restrictions
on their structure. The main difference of Rubernate from traditional ORM is that it uses common
database tables to store all classes of persistent objects. All object-related data are stored in
fixed set of tables.
This approach has following advantages:
- Simplicity - it simplifies greatly persistent classes creation and their modifications,
too, because it prevents database structure changes.
- Dynamic structure - values of attributes of persistent classes not longer restricted by types of
corresponding table columns, they can store any of supported types. This allows you to create
very complex structures of objects.
- Reusability - as persistence doesn't depend on database structure its possible to reuse
objects in different projects.
- Object oriented storage - it is possible to impose conditions on objects classes during a search.
Rubernate has following features:
- Classes can have persistent attributes of following types: Integer, Float,
String, Date, Time, Reference to Persistent Object, Array of References,
Hash of References with key of type Integer, Float, String, Date or Time.
- Built-in query language and support for native queries
- Support for Oracle, MySQL, PostgreSQL and can be easily extended to other databases.
- Can be used independently or with other ORM like ActiveRecord
- Extendable architecture - can be easily extended by user functionality.