Sequel is a lightweight database access toolkit for Ruby.
- Sequel provides thread safety, connection pooling and a concise
DSL for constructing SQL queries and table schemas. - Sequel includes a comprehensive ORM layer for mapping records to
Ruby objects and handling associated records. - Sequel supports advanced database features such as prepared
statements, bound variables, stored procedures, savepoints,
two-phase commit, transaction isolation, master/slave
configurations, and database sharding. - Sequel currently has adapters for ADO, Amalgalite, CUBRID,
DataObjects, DB2, DBI, Firebird, IBM_DB, Informix, JDBC, MySQL,
Mysql2, ODBC, OpenBase, Oracle, PostgreSQL, SQLite3, Swift, and
TinyTDS.
Sequel 4.1.0 has been released!
= New Features
-
Database#run and #<< now accept SQL::PlaceholderLiteralString
objects, allowing you to more easily run arbitrary DDL queries with
placeholders:DB.run Sequel.lit(“CREATE TABLE ? (? integer)”, :table, :column)
-
You can now provide options for check constraints by calling the
constraint/add_constraint methods with a hash as the first argument.
On PostgreSQL, you can now use the :not_valid option for check
constraints, so they are enforced for inserts and updates, but
not for existing rows.DB.create_table(:table) do
…
constraint({:name=>:constraint_name, :not_valid=>true}) do
column_name > 10
end
end -
Dataset#stream has been added to the mysql2 adapter, and will have
the dataset stream results if used with mysql2 0.3.12+. This
allows you to process large datasets without keeping the entire
dataset in memory.DB[:large_table].stream.each{|r| …}
-
Database#error_info has been added to the postgres adapter. It
is supported on PostgreSQL 9.3+ if pg-0.16.0+ is used as the
underlying driver, and it gives you a hash of metadata related
to the exception:DB[:table_name].insert(1) rescue DB.error_info($!)
=> {:schema=>“public”, :table=>“table_name”, :column=>nil,
:constraint=>"constraint_name", :type=>nil}
-
The :deferrable option is now supported when adding exclusion
constraints on PostgreSQL, to allow setting up deferred exclusion
constraints. -
The :inherits option is now supported in Database#create_table on
PostgreSQL, for table inheritance:DB.create_table(:t1, :inherits=>:t0){}
CREATE TABLE t1 () INHERITS (t0)
-
Dataset#replace and #multi_replace are now supported on SQLite,
just as they have been previously on MySQL. -
In the jdbc adapter, Java::JavaUtil::HashMap objects are now
converted to ruby Hash objects. This is to make it easier to
handle the PostgreSQL hstore type when using the jdbc/postgres
adapter. -
The odbc adapter now supports a :drvconnect option that accepts
an ODBC connection string that is passed to ruby-odbc verbatim.
= Other Improvements
-
The prepared_statements plugin no longer breaks the
instance_filters and update_primary_key plugins. -
Dropping indexes for tables in a specific schema is now supported
on PostgreSQL. Sequel now explicitly specifies the same schema
as the table when dropping such indexes. -
Calling Model#add_association methods with a primary key value
now raises a Sequel::NoMatchingRow if there is no object in the
associated table with that primary key. Previously, this
situation was not handled and resulted in a NoMethodError being
raised later. -
When an invalid virtual row block function call is detected, an
error is now properly raised. Previously, the error was not
raised until the SQL was produced for the query.
= Backwards Compatibility
-
The :driver option to the odbc adapter is deprecated and will be
removed in a future version. It is thought to be broken, and
users wanting to use DSN-less connections should use the new
:drvconnect option. -
The Postgres::ArrayOp#text_op private method has been removed.
Thanks,
Jeremy
- {Website}[http://sequel.rubyforge.org]
- {Source code}[GitHub - jeremyevans/sequel: Sequel: The Database Toolkit for Ruby]
- {Blog}[http://sequel.heroku.com]
- {Bug tracking}[Issues · jeremyevans/sequel · GitHub]
- {Google group}[http://groups.google.com/group/sequel-talk]
- {RDoc}[http://sequel.rubyforge.org/rdoc]