Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
comp.lang.ruby
ANN: Sequel 0.1.8 Released
Sharon Rosner
7/10/2007 5:33:00 AM
Sequel version 0.1.8 has just been released. This release is focused
on substantial refactoring of the Dataset class, mainly in order to
simplify individual adapter implementations. Also included in this
release are several bug fixes and some new features.
Important: I did my best to ensure that all adapters will work
correctly, but I can only test two on my setup: sqlite and postgres.
So if you use other adapters please let me know if you run into
trouble. Worst case just remove version 0.1.8 and install version
0.1.7.
Following is a discussion of the main changes:
Support for polymorphic models
==============================
Datasets can now provide support for polymorphic models by
instantiating model instances based on a value in a specific column.
For example:
addresses = DB[:addresses]
addresses.set_model(:kind, 1 => User, 2 => Company)
This is pretty much self-explanatory. The dataset will lookup the
value of the :kind column for each row and instantiate the respective
model class. You can also specify a default model class:
address.set_model(:kind, 1 => User, 2 => Company, nil =>
Addressable)
In order to specify a single model to use, just call the #set_model
method with a single class:
addresses = DB[:addresses]
addresses.set_model(Address)
Retrieving the columns in a dataset
===================================
The Dataset class includes a new #columns method which lets you
retrieve the column names in the result set in the correct order:
DB[:items].columns #=>
[:id, :name, :price]
The Dataset#print method has also been updated to automatically use
this method to determine the order of columns in the printed table.
SQLite Pragmas
==============
The SQLite adapter includes several methods to dynamically control
database behavior. You can programatically set the auto_vacuum,
synchronous and temp_store pragmas, e.g.:
DB.auto_vacuum = :full # one of :none, :full, :incremental
DB.synchronous = :off # one of :off, :normal, :full
DB.temp_store = :memory # one of :default, :file, :memory
You can also set and retrieve other pragma values:
DB.pragma_get(:encoding)
DB.pragma_set(:encoding, 'UTF-8')
Postgresql EXPLAIN ANALYZE
==========================
The postgres adapter now includes a Postgres::Dataset#analyze method
to further analyze query performance. Here's some sample output:
Session.producers.sql #=>
"SELECT * FROM sessions WHERE NOT (mount_path IS NULL)"
puts Session.producers.analyze
# output
Seq Scan on sessions (cost=0.00..617.76 rows=18483 width=152)
(actual time=34.454..34.454 rows=0 loops=1)
Filter: (NOT (mount_path IS NULL))
Total runtime: 34.551 ms
Also, Postgres::Dataset#explain was broken and is now fixed.
Simplified and standardized Dataset adapter interface
=====================================================
Writing a Sequel adapter is now much easier. A Dataset implementation
should only override 4 methods: fetch_rows, insert, update and delete.
More specs
==========
Sequel is now at 95% code coverage on the specs. There is also a new
sqlite adapter spec. Adapter specs can be tested by running rake
spec_all.
Miscellaneous
=============
* Fixed Postgres::Dataset#explain.
* Renamed Dataset#hash_column to Dataset#to_hash.
* Various code tweaks.
======================
Sequel documentation:
<
http://sequel.rubyfor...
Join the Sequel-talk group:
<
http://groups.google.com/group/seque...
Install the gem:
sudo gem install sequel
Or check out the source and install manually:
svn co
http://ruby-sequel.googlecode.com...
sequel
cd sequel
rake install
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
ANN: Sequel 0.1.8 Released
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password