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 3.42.0 has been released and should be available on the gem
mirrors.
= New Features
-
Dataset#avg, #interval, #min, #max, #range, and #sum now
accept virtual row blocks, allowing you to more easily get
aggregate values of expressions based on the table:DB[:table].sum{some_function(column1, column2)} # => 134
SELECT sum(some_function(column1, column2)) FROM table
-
Database#do has been added on PostgreSQL for using the DO
anonymous code block execution statement. -
Model.dataset_module now uses a Module subclass, which allows
you to call subset inside a dataset_module block, making
it easier to consolidate dataset method code:class Album < Sequel::Model
dataset_module do
subset(:gold){copies_sold > 500000}
end
end -
Database#copy_table and #copy_into are now supported on
jdbc/postgres. -
Sequel now supports deferred constraints on constraint types other
than foreign keys. The only databases that appear to implement
this are Oracle and PostgreSQL. -
Sequel now supports INITIALLY IMMEDIATE deferred constraints via
the :deferrable=>:immediate constraint/column option. -
Sequel now supports setting the default size of string columns,
via the default_string_column_size option or accessor. In some
cases, Sequel’s default string column size of 255 is too large
(e.g. MySQL with utf8mb4 character set), and this allows you to
change it.
= Other Improvements
-
Dataset#count and other methods now use a subselect in the case
where the dataset has an offset but no limit. -
If an error occurs while attempting to commit a transaction, Sequel
now attempts to rollback the transaction. Some databases do this
automatically, but not all. Among other things, this fixes issues
with deferred foreign key constraint violations on SQLite. -
When extending a model’s dataset, the model’s instance_dataset is
reset, insuring that it will also be extended with the module. -
When passing an invalid argument to Dataset#filter, the exception
message now includes the argument. -
The force_encoding plugin now works with frozen string values.
-
Public methods added to a model dataset_module now have model
class methods created for them even if the method was added outside
of a dataset_module block. -
On PostgreSQL, Database#indexes now includes a :deferrable entry
for each index hash, which will be true for unique indexes where
the underlying constraint is deferrable. -
On Microsoft SQL Server 2000, Dataset#update no longer includes a
limit (TOP), allowing it to work correctly.
= Backwards Compatibility
- Model.dataset_methods has been removed. This was used to store
blocks for methods created via def_dataset_method and subset.
The internals have been changed so that a dataset_module is
always used in these cases, therefore there was no longer a reason
for this method.
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]