Sequel is much more than an ORM. It's a complete solution for interacting with databases from Ruby, managing and interfacing with the entire database, not just its data.
Developers can use the IRB console or Sequel's own DSL to quickly assemble databases, manage schemas, build SQL queries, run transactions, fetch results, and convert the results to a Ruby malleable format.
It works like an abstraction layer between Ruby and SQL, helping developers with Ruby skills, but with lesser SQL knowledge.
Supported databases and tools:
ADO
Amalgalite
CUBRID
DataObjects
DB2
DBI
Firebird
IBM_DB
Informix
JDBC
MySQL
Mysql2
ODBC
OpenBase
Oracle
PostgreSQL
SQLAnywhere
SQLite3
Swift
TinyTDS
Here are some key features of "Sequel":
- Thread safety
- Connection pooling
- Concise DSL
- Built-in ORM
- Prepared statements
- Bound variables
- Transaction isolation
- Stored procedures
- Savepoints
- Two-phase commits
- Master/slave configurations
- Database sharding
- IRB console
- Documentation
Requirements:
- Massive speedup for PostgreSQL array parser
- Add current_datetime_timestamp extension, for current Time/DateTime instances that are literalized as CURRENT_TIMESTAMP
- Recognize additional unique constraint violations on SQLite
- Don't remove column value when validating nested attributes for one_to_* association where association foreign key is the model's primary key
- Add Dataset#disable_insert_returning on PostgreSQL for skipping implicit use of RETURNING
- Automatically optimize Model.[], .with_pk, and .with_pk! for models with composite keys
- Automatically optimize Model.[] when called with a hash
- Recognize CHECK constraint violations on newer versions of SQLite
- Do not attempt to eager load when calling Dataset#columns in the eager_each plugin
- Support :driver option for jdbc adapter, for specifying driver class for cases where getConnection doesn't work