ANN: Sequel 3.21.0 Released


Jeremy Evans

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, DataObjects,
DB2, DBI, Firebird, Informix, JDBC, MySQL, Mysql2, ODBC, OpenBase,
Oracle, PostgreSQL, SQLite3, Swift, and TinyTDS.

Sequel 3.21.0 has been released and should be available on the gem

= New Features

* A tinytds adapter was added, enabling Sequel users on a C-based
ruby running on *nix easy access to Microsoft SQL Server.
Previously, the best way to connect to Microsoft SQL Server from
a C-based ruby on *nix was to use the ODBC adapter with unixodbc
and freetds. However, setting that up is nontrivial, while
setting up tinytds is very easy.

Note that the tinytds adapter currently requires the git master
branch of tiny_tds, but tiny_tds 0.4.0 should include the related

* An association_autoreloading plugin has been added to Sequel,
which removes stale many_to_one associations from the cache when
the associated foreign key setter is used to change the value of
the foreign key.

* bin/sequel now operates more like a standard *nix utility.
If given a file on the command line after the connection
string, it will assume that file has ruby code and load it.
If stdin is not a tty, it will read from stdin and execute it
as ruby code.

For recent Linux users, this means you can have a shebang line
such as:

#!/usr/bin/sequel postgres://user:pass@host/db

to create a self contained script.

* bin/sequel now supports -r and -I options similar to ruby's
-r and -I options.

* MySQL datasets now have a calc_found_rows method that uses
SQL_CALC_FOUND_ROWS, which provides a fast way to limit the
number of results returned by a dataset while having an easy
way to determine how many rows would have been returned if no
limit was applied.

= Other Improvements

* The Sequel::Model.plugin method can now be overridden just like
any other method. Previously, it was the only method that
was defined directly on the class. This allows the creation
of plugins that can modify the plugin system itself.

* Symbol splitting :)table__column___alias) now works correctly
for identifiers that include characters that aren't in [\w ].
Among other things, this means that identifiers with accented
characters or even kanji characters can be used with symbol

* If cover? is defined, it is now used in preference to include?
for the validates_includes/validates_inclusion_of validations.
ruby 1.9 defines include? differently for some ranges and can
be very slow, while cover? is similar to the 1.8 behavior of
just checking the beginning and end of the range.

* The bin/sequel -L option now takes effect even if the -m,
-C, -d, or -D options are used.

* The schema_dumper extension now recognizes the "bigint unsigned"

* On Microsoft SQL Server, if joining to a subselect that uses a
common table expression, that common table expression is
promoted to the main dataset. This allows most queries to work
correctly, but is vulnerable to issues if both the current
dataset and the joined dataset use common table expressions with
the same name. Unfortunately, unlike PostgreSQL, Microsoft SQL
Server does not allow common table expressions to occur in

* The NULL/NOT NULL, DEFAULT, and UNIQUE column options now
use the proper order on H2 and Oracle, so they can now be
used in conjunction with each other.

* Row locks are now enabled on Oracle.

* The join_table method on MySQL no longer ignores the block it was

* The informix adapter now supports ruby-informix version >= 0.7.3,
while still being backwards compatible with older versions.

* The specs now run under both RSpec 2 and RSpec 1.


* {Website}[]
* {Source code}[]
* {Blog}[]
* {Bug tracking}[]
* {Google group}[]
* {RDoc}[]

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Latest member

Latest Threads