[#338014] Sqlite3-ruby ON Windows Vista with 1.9.1p129 mingw32 — "J. D." <jdezenzio@...>

I'm using the ming compiled 1.9.1 p 129 successfully on Vista and I even

13 messages 2009/06/01

[#338085] Games for Programmers — Daniel Berger <djberg96@...>

Hi everyone,

18 messages 2009/06/01

[#338135] nfc 1.0.0 Released — Aaron Patterson <aaron@...>

nfc version 1.0.0 has been released!

16 messages 2009/06/02

[#338141] <, >, and ranges in a case statement. — Max Williams <toastkid.williams@...>

I feel like this should be simple but i can't figure it out.

16 messages 2009/06/02

[#338307] Compiling Ruby 1.9.1 zlib issue on Windows — "J. D." <jdezenzio@...>

Hi everyone,

14 messages 2009/06/03

[#338344] Ruby OS — Sparky Mat <max@...>

I was considering porting the Ruby 1.9 VM to bare metal (something

16 messages 2009/06/04

[#338466] ruby_frame in 1.8 is what in 1.9? — Jason Roelofs <jameskilton@...>

So I have some C++ extension code that nicely uses ruby_frame->orig_func and

11 messages 2009/06/05

[#338469] Problem with cronjob and ruby script — Matthew Lagace <mlagace@...>

Hello,

20 messages 2009/06/05
[#338476] Re: Problem with cronjob and ruby script — Bil Kleb <Bil.Kleb@...> 2009/06/05

Matthew Lagace wrote:

[#338478] Re: Problem with cronjob and ruby script — Matthew Lagace <mlagace@...> 2009/06/05

Hmm I've tried running with a blank environment and it fails with the

[#338481] Re: Problem with cronjob and ruby script — Hassan Schroeder <hassan.schroeder@...> 2009/06/05

On Fri, Jun 5, 2009 at 8:00 AM, Matthew Lagace<mlagace@rasib.ca> wrote:

[#338483] Re: Problem with cronjob and ruby script — Matthew Lagace <mlagace@...> 2009/06/05

Oh I see can you give me an example please?

[#338516] Twitter Personalities (#208) — Daniel Moore <yahivin@...>

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

23 messages 2009/06/05

[#338519] SPAM from Usenet — Eric Hodel <drbrain@...7.net>

It seems the gateway is passing a lot more spam these days.

71 messages 2009/06/05
[#338522] Re: SPAM from Usenet — James Gray <james@...> 2009/06/05

On Jun 5, 2009, at 4:30 PM, Eric Hodel wrote:

[#338524] Re: SPAM from Usenet — Eric Hodel <drbrain@...7.net> 2009/06/05

On Jun 5, 2009, at 14:42, James Gray wrote:

[#338686] How to sort array ascending, except zero ? — Paganoni <noway@...>

Hello, I need to sort

24 messages 2009/06/08

[#338769] Ruby 1.9.x Concurrency — "s.ross" <cwdinfo@...>

Poking through the Apple press releases today, I sat up and took

20 messages 2009/06/09
[#338808] Re: Ruby 1.9.x Concurrency — James Gray <james@...> 2009/06/09

On Jun 9, 2009, at 1:23 AM, s.ross wrote:

[#338825] Re: Ruby 1.9.x Concurrency — Charles Oliver Nutter <headius@...> 2009/06/09

On Tue, Jun 9, 2009 at 9:16 AM, James Gray<james@grayproductions.net> wrote:

[#338835] Re: Ruby 1.9.x Concurrency — Tony Arcieri <tony@...> 2009/06/09

On Tue, Jun 9, 2009 at 10:06 AM, Charles Oliver Nutter

[#338776] require_all 1.0.0: A wonderfully simple way to load your code — Tony Arcieri <tony@...>

require_all

12 messages 2009/06/09

[#338875] centos and ruby 1.9.1 - possible? — "Älphä Blüë" <jdezenzio@...>

I hate even typing the question but my vps template has centos

20 messages 2009/06/10
[#338886] Re: centos and ruby 1.9.1 - possible? — James Britt <james.britt@...> 2009/06/10

底phBl鵫 wrote:

[#338918] Re: centos and ruby 1.9.1 - possible? — "Älphä Blüë" <jdezenzio@...> 2009/06/10

James Britt wrote:

[#338890] Ruby 1.8.6-pl369 released — Kirk Haines <wyhaines@...>

We have released Ruby 1.8.6-pl369. This is primarily a security release.

12 messages 2009/06/10
[#338935] Re: [Security] Ruby 1.8.6-pl369 released — Charles Oliver Nutter <headius@...> 2009/06/10

On Wed, Jun 10, 2009 at 12:14 AM, Kirk Haines<wyhaines@gmail.com> wrote:

[#338894] Any plans for a Ruby 1.9.1 One-Click Installer? — Benjamin L. Russell <DekuDekuplex@...>

Are there any plans for a Ruby 1.9.1 One-Click Installer for Windows?

18 messages 2009/06/10

[#339014] publically accessible fastri — Roger Pack <rogerpack2005@...>

I have been thinking recently that I wish I could access ri data for

14 messages 2009/06/11

[#339033] Idiomatic way to detect first/last iteration? — Kendall Gifford <zettabyte@...>

Hi there, is there any recognized ruby idiomatic way for detecting

20 messages 2009/06/11

[#339099] wrapping a C struct[] constant — Martin DeMello <martindemello@...>

I have some C code with a struct definition

15 messages 2009/06/12
[#339106] Re: wrapping a C struct[] constant — Eero Saynatkari <ruby-ml@...> 2009/06/12

Martin DeMello wrote:

[#339119] Re: wrapping a C struct[] constant — Jason Roelofs <jameskilton@...> 2009/06/12

On Fri, Jun 12, 2009 at 7:42 AM, Eero Saynatkari <ruby-ml@kittensoft.org>wrote:

[#339123] Re: wrapping a C struct[] constant — Martin DeMello <martindemello@...> 2009/06/12

On Fri, Jun 12, 2009 at 7:01 PM, Jason Roelofs<jameskilton@gmail.com> wrote:

[#339146] Matrix Rotator (#209) — Daniel Moore <yahivin@...>

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

17 messages 2009/06/12

[#339260] each by arity — Trans <transfire@...>

I've always wondered, why?

20 messages 2009/06/14
[#339262] Re: each by arity — Joel VanderWerf <vjoel@...> 2009/06/14

Trans wrote:

[#339264] Re: each by arity — Tony Arcieri <tony@...> 2009/06/14

On Sun, Jun 14, 2009 at 1:37 PM, Joel VanderWerf <vjoel@path.berkeley.edu>wrote:

[#339265] Re: each by arity — Yossef Mendelssohn <ymendel@...> 2009/06/14

On Jun 14, 3:32m, Tony Arcieri <t...@medioh.com> wrote:

[#339304] formatting a listing — George George <george.githinji@...>

i have a listing which looks like this

21 messages 2009/06/15

[#339395] Ruby feasibility? — Dave Kubasiak <davekub@...>

Good morning,

14 messages 2009/06/16

[#339404] shebang! on Leopard — "Paul M." <paul.maxfield007@...>

Hey everyone,

14 messages 2009/06/16

[#339513] String += vs << — Joshua Ball <chezball@...>

A friend recently sent me this article:

12 messages 2009/06/17

[#339546] enterprise 1.0.0 Released — Aaron Patterson <aaron@...>

enterprise version 1.0.0 has been released!

12 messages 2009/06/18

[#339680] Capturing System Call Return Values? — Tyler Knappe <tyler.knappe@...>

I'm attempting to use Ruby to make system calls (in this case python

18 messages 2009/06/19
[#339683] Re: Capturing System Call Return Values? — Roger Pack <rogerpack2005@...> 2009/06/19

Tyler Knappe wrote:

[#339734] 'move into' a module's namespace in irb — Max Williams <toastkid.williams@...>

I'm in an irb session where i have a lot of modules loaded. All of the

13 messages 2009/06/20

[#339757] regular expression gurus--help! — timr <timrandg@...>

I want all possible three letter sets for a string. Scan does this:

18 messages 2009/06/21

[#339776] if column header contain regexp, delete column — Paul Shapiro <fightoplankton@...>

I need to see if a csv column header matches a pattern (see columns 2/3

10 messages 2009/06/21

[#339809] ruby suggestion: officially sanctioned tutorials/howto's — Roger Pack <rogerpack2005@...>

Current situation:

24 messages 2009/06/22
[#339811] Re: ruby suggestion: officially sanctioned tutorials/howto's — James Gray <james@...> 2009/06/22

On Jun 22, 2009, at 7:10 AM, Roger Pack wrote:

[#339824] Re: ruby suggestion: officially sanctioned tutorials/howto's — Joel VanderWerf <vjoel@...> 2009/06/22

James Gray wrote:

[#339854] Re: ruby suggestion: officially sanctioned tutorials/howto's — Robert Dober <robert.dober@...> 2009/06/22

On Mon, Jun 22, 2009 at 6:50 PM, Joel VanderWerf<vjoel@path.berkeley.edu> wrote:

[#339941] Re: ruby suggestion: officially sanctioned tutorials/howto's — Robert Klemme <shortcutter@...> 2009/06/23

On 23.06.2009 01:20, Robert Dober wrote:

[#339944] Re: ruby suggestion: officially sanctioned tutorials/howto's — Robert Dober <robert.dober@...> 2009/06/23

On Tue, Jun 23, 2009 at 11:30 PM, Robert

[#339946] Re: ruby suggestion: officially sanctioned tutorials/howto's — Roger Pack <rogerpack2005@...> 2009/06/23

>> Having said that it is probably a good idea to include tutorials in the

[#340001] Re: ruby suggestion: officially sanctioned tutorials/howto's — Robert Klemme <shortcutter@...> 2009/06/24

On 24.06.2009 00:00, Roger Pack wrote:

[#339834] map shall not return an Enumerator ( was re guru help ) — Robert Dober <robert.dober@...>

On Mon, Jun 22, 2009 at 2:52 PM, Brian Candler<b.candler@pobox.com> wrote:

10 messages 2009/06/22

[#339871] Execute Ruby script over HTTP protocol as Java Script — Speed Knownas <karthick1983@...>

Hi All,

13 messages 2009/06/23

[#339982] THREE HUNDRED! — Ryan Davis <ryand-ruby@...>

I just finished my release flood and we cracked release #300!

46 messages 2009/06/24
[#339983] Re: THREE HUNDRED! — Xeno Campanoli <xeno.campanoli@...> 2009/06/24

Ryan Davis wrote:

[#339985] Re: THREE HUNDRED! — Ryan Davis <ryand-ruby@...> 2009/06/24

[#339988] Re: THREE HUNDRED! — John Barnette <jbarnette@...> 2009/06/24

On Tue, Jun 23, 2009 at 8:29 PM, Ryan Davis<ryand-ruby@zenspider.com> wrote:

[#339994] Re: THREE HUNDRED! — lith <minilith@...> 2009/06/24

> I fear change. Could you please stop improving your software and just

[#340022] Time for a ruby-announce list? — Trans <transfire@...>

We are seeing a lot or release announcements among the regular posts

45 messages 2009/06/24
[#340088] Re: Time for a ruby-announce list? — Roger Pack <rogerpack2005@...> 2009/06/24

> We are seeing a lot or release announcements among the regular posts

[#340090] How do I get an integer from an array? — Peter Bailey <pbailey@...>

Hi,

14 messages 2009/06/24

[#340171] Attr Methods and object setters — Marc Heiler <shevegen@...>

We can do:

28 messages 2009/06/25
[#340193] Re: Attr Methods and object setters — Gregory Brown <gregory.t.brown@...> 2009/06/25

On Thu, Jun 25, 2009 at 2:05 PM, Marc Heiler<shevegen@linuxmail.org> wrote:

[#340216] Re: Attr Methods and object setters — Fabian Streitel <karottenreibe@...> 2009/06/26

> This is the pattern I use:

[#340264] Re: Attr Methods and object setters — Gregory Brown <gregory.t.brown@...> 2009/06/26

On Fri, Jun 26, 2009 at 4:00 AM, Fabian

[#340299] Re: Attr Methods and object setters — Fabian Streitel <karottenreibe@...> 2009/06/27

See here: http://pastie.org/526403

[#340301] Re: Attr Methods and object setters — Gregory Brown <gregory.t.brown@...> 2009/06/27

On Sat, Jun 27, 2009 at 10:42 AM, Fabian

[#340335] Re: Attr Methods and object setters — Daniel DeLorme <dan-ml@...42.com> 2009/06/28

Gregory Brown wrote:

[#340239] Trying to define a 'class' without using 'class' sentence — Fernando Guillen <fguillen.mail@...>

Hi people.. I was watching the Dave Thomas' talk on the ScotlandOnRails

18 messages 2009/06/26

[#340385] RDoc-style documentation for Ruby keywords — "David A. Black" <dblack@...>

Hi --

20 messages 2009/06/29

[#340409] Best OS packages for Ruby? — "Michael J. I. Jackson" <mjijackson@...>

Hi all,

23 messages 2009/06/29
[#340427] Re: Best OS packages for Ruby? — Fabian Streitel <karottenreibe@...> 2009/06/29

Hi Michael,

[#340484] Re: Best OS packages for Ruby? — David Masover <ninja@...> 2009/06/30

On Monday 29 June 2009 12:11:38 pm Fabian Streitel wrote:

[#340515] Re: Best OS packages for Ruby? — Joel VanderWerf <vjoel@...> 2009/06/30

David Masover wrote:

[#340518] Re: Best OS packages for Ruby? — James Britt <james.britt@...> 2009/06/30

Joel VanderWerf wrote:

[#340588] Re: Best OS packages for Ruby? — Fabian Streitel <karottenreibe@...> 2009/07/01

>

[#340410] Making a random string — Lloyd Linklater <lloyd@2live4.com>

I have been trying to generate a random string. One approach in, say,

21 messages 2009/06/29
[#340492] Re: Making a random string — Brian Candler <b.candler@...> 2009/06/30

Lloyd Linklater wrote:

[#340432] attr_writers within blocks — Wijnand Wiersma <wijnand@...>

Hi all,

14 messages 2009/06/29

[#340460] Question on networking with custom binary interface. — Greg Chambers <gregory.w.chambers@...>

So I am working on this Ruby server application for Windows that needs

13 messages 2009/06/29

ANN: Sequel 3.1.0 Released

From: Jeremy Evans <code@...>
Date: 2009-06-04 16:40:17 UTC
List: ruby-talk #338387
Sequel is a lightweight database access toolkit for Ruby.

* Sequel provides thread safety, connection pooling and a concise DSL
  for constructing database queries and table schemas.
* Sequel also includes a lightweight but 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, master/slave
  configurations, and database sharding.
* Sequel makes it easy to deal with multiple records without having
  to break your teeth on SQL.
* Sequel currently has adapters for ADO, Amalgalite, DataObjects,
  DB2, DBI, Firebird, Informix, JDBC, MySQL, ODBC, OpenBase, Oracle,
  PostgreSQL and SQLite3.

Sequel 3.1.0 has been released and should be available on the gem
mirrors.  The 3.1.0 release adds numerous improvements:

New Plugins
-----------

3 new plugins were added that implement features supported by
DataMapper: identity_map, tactical_eager_loading, and
lazy_attributes.  These plugins don't add any real new features,
since you could do everything they allow before simply by being
a little more explicit in your Sequel code. However, some people
prefer a less explicit approach that uses a bit more magic, and
now Sequel can accomodate them.

* The identity_map plugin allows you to create a 1-1
  correspondence of model objects to database rows via a temporary
  thread-local identity map.  It makes the following statment true:

    Sequel::Model.with_identity_map do
      Album.filter{(id > 0) & (id < 2)}.first.object_id == \
        Album.first(:id=>1).object_id
    end

  As the code above implies, you need to use the with_identity_map
  method with a block to use the identity mapping feature.

  By itself, identity maps don't offer much, but Sequel uses them
  as a cache when looking up objects by primary key or looking up
  many_to_one associated objects.  Basically, it can be used as a
  performance enhancer, and it also allows the support of the
  later plugins.

  The identity_map plugin is expected to be most useful in web
  applications.  With that in mind, here's a Rack middleware that
  wraps each request in a with_identity_map call, so the
  identity_map features are available inside the web app:

    Sequel::Model.plugin :identity_map
    class SequelIdentityMap
      def initialize(app)
        @app = app
      end
      def call(env)
        Sequel::Model.with_identity_map{@app.call(env)}
      end
    end

* The tactical_eager_loading plugin allows you to eagerly load an
  association for all models retrieved in the same group whenever
  one of the models accesses the association:

    # 2 queries total
    Album.filter{id<100}.all do |a|
      a.artists
    end

  In order for this correctly, you must use Dataset#all to load the
  records, you cannot iterate over them via Dataset#each.  This is
  because eager loading requires that you have all records in
  advance, and when using Dataset#each you cannot know about later
  records in the dataset.

  Before, you could just be explicit about the associations you
  needed and make sure to eagerly load them using eager before
  calling Dataset#all.

* The lazy_attributes plugin builds on the identity_map and
  tactical_eager_loading plugins and allows you to create
  attributes that are lazily loaded from the database:

    Album.plugin :lazy_attributes, :review

  This will remove the :review attribute from being selected by
  default.  If you try to access the attribute after it is selected,
  it'll retrieve the value from the database.  If the object was
  retrieved with a group of other objects and an identity map is in
  use, it'll retrieve the lazy attribute for the entire group of
  objects at once, similar to the tatical_eager_loading plugin:

    # 2 queries total
    Sequel::Model.with_identity_map do
      Album.filter{id<100}.all do |a|
        a.review
      end
    end

  Before, you could just set the default selected columns for a model
  to not include the lazy attributes, and just use select_more to
  add them to any query where the resulting model objects will
  need the attributes.

* A many_through_many plugin was also added.  This very powerful
  plugin allows you to create associations to multiple objects through
  multiple join tables.  Here are some examples:

    # Assume the following many to many associations:
    Artist.many_to_many :albums
    Album.many_to_many :tags

    # Same as Artist.many_to_many :albums
    Artist.many_through_many :albums,
      [[:albums_artists, :artist_id, :album_id]]

    # All tags associated to any album this artist is associated to
    Artist.many_through_many :tags,
      [[:albums_artists, :artist_id, :album_id],
       [:albums, :id, :id],
       [:albums_tags, :album_id, :tag_id]]

    # All artists associated to any album this artist is associated to
    Artist.many_through_many :artists,
      [[:albums_artists, :artist_id, :album_id],
       [:albums, :id, :id],
       [:albums_artists, :album_id, :artist_id]]

    # All albums by artists that are associated to any album this
    # artist is associated to
    Artist.many_through_many :artist_albums,
      [[:albums_artists, :artist_id, :album_id],
       [:albums, :id, :id],
       [:albums_artists, :album_id, :artist_id],
       [:artists, :id, :id],
       [:albums_artists, :artist_id, :album_id]]

  Basically, for each join table between this model and the
  associated model, you use an array with a join table name, left key
  name (key closer to this model), and right key name (key closer to
  the associated model).

  In usual Sequel fashion, this association type works not just
  for single objects, but it can also be eagerly loaded via eager or
  eager_graph.  There are numerous additional configuration options,
  please see the RDoc for details.

  many_through_many should be able to handle any ActiveRecord has_many
  :through association, as well as many associations that aren't
  handled by any other ruby ORM.

New bin/sequel Features
-----------------------

The bin/sequel command line tool now supports the following options:

* -C: Copies one database to another.  You must specify two database
  arguments.  Works similar to Taps, copying the table schema, then
  the table data, then creating the indexes.

* -d: Dump the schema of the database in the database-independent
  migration format.

* -D: Dump the schema of the database in the database-specific
  migration format.

* -h: Display the help

* -t: Output the full backtrace if an exception is raised

The bin/sequel tool is now better about checking which options can
be used together.  It also now supports using the -L option multiple
times and having it load model files from multiple directory trees.

New Features
------------

* Dataset#qualify_to and #qualify_to_first_source were added.  They
  allow you to qualify unqualified columns in the current dataset
  to the given table or the first source. This can be used to join
  a dataset that has unqualified columns to a new table which has
  columns with the same name.

  For example, take this dataset:

    ds = DB[:albums].select(:name).order(:name).filter(:id=>1)
    # SELECT name FROM albums WHERE (id = 1) ORDER BY name

  Let's say you want to join it to the artists table:

    ds2 = ds.join(:artists, :id=>:artist_id)
    # SELECT name FROM albums
    #  INNER JOIN artists ON (artists.id = albums.artist_id)
    #  WHERE (id = 1) ORDER BY name

  That's going to give you an error, as the artists table already has
  columns named id and name.  This new feature allows you to do the
  following:

    ds2 = ds.qualify_to_first_source.join(:artists, :id=>:artist_id)
    # SELECT albums.name FROM albums
    #  INNER JOIN artists ON (artists.id = albums.artist_id)
    #  WHERE (albums.id = 1) ORDER BY albums.name

  By doing this, all unqualified columns are qualified, so you get
  a usable query.  This is expected to be most useful for users that
  have a default order or filter on their models and want to join
  the model to another table.  Before you had to replace the filters,
  selection, etc. manually, or use qualified columns by default even
  though the weren't needed in most cases.

* Savepoints are now supported using SQLite and MySQL, assuming you
  are using a database version that supports them.  You need to
  pass the :savepoint option to Database#transaction to use a
  savepoint.

* Model plugins can now depend on other plugins, simply by calling
  the Model.plugin method inside the plugin's apply method:

    module LazyAttributes
      def self.apply(model)
        model.plugin :tactical_eager_loading
      end

* Model.plugin now takes a block with is passed to the plugin's
  apply and configure method (see Backwards Compatibility section for
  more information on the configure method).

* You can see which plugins are loaded for a model by using
  Model.plugins.

* You can use Sequel.extension method to load extensions:

    Sequel.extension :pagination, :query

  This will only load extensions that ship with Sequel, unlike the
  Model.plugin method which will also load external plugins.

* You can now use Database#create_table? to create the table if it
  doesn't already exist (a very common need, it seems).  The schema
  plugin now supports Model.create_table? as well.

* #sql_subscript is now an allowed method on most SQL expression
  objects that Sequel generates.  Also, arguments to #sql_subscript
  can now be other expressions instead of just integers.

* Associations can now take a :cartesian_product_number option, which
  can be used to tell Sequel whether to turn on duplicate object
  detection when eagerly loading objects through eager_graph.  This
  number should be 0 if the association can never create multiple
  rows for each row in the current table, 1 if it can create multiple
  rows in the each row in the current table, and 2 if the association
  itself causes a cartesian product.

* On MySQL, Dataset#insert_ignore now affects #insert as well as
  multi_insert and import.

* Database#create_table now supports an :ignore_index_errors option,
  and Database#add_index now supports an :ignore_errors option.
  These are used by the schema_dumper when dumping an database
  schema to be restored on another database type, since indexes
  aren't usually required for proper operation and some indexes
  can't be transferred.

* The ADO adapter now takes a :provider option, which can be used
  to set the provider.

* The ADO adapter now takes a :command_timeout option, which tells
  the connection how long to wait before giving up and raising an
  exception.

* The Sequel.amalgalite adapter method was added.  Like the
  Sequel.sqlite method, you can call it with no arguments to get
  an in memory database.

Other Improvements
------------------

* MySQL "commands out of sync" errors should no longer occur unless
  you are nesting queries (calling Dataset#each inside Dataset#each).
  A bug dating at least to 2007 and possibly since the initial
  creation of the Sequel MySQL adapter was the cause.  Before, SQL
  that caused a result set that was sent using a method where Sequel
  doesn't yield a result set would cause the "commands out of sync"
  error on the following query.  For example, the following code
  would cause the error:

    DB << "SHOW DATABASES"

  If for some reason a "commands out of sync" error does occur,
  Sequel will disconnect the connection from the connection pool,
  so it won't continually stay in the pool and raise errors every
  time it is used.

* The schema_dumper extension is much better about parsing defaults
  from the database.  It can now correctly parse most defaults on
  MySQL, SQLite, and PostgreSQL databases.  It no longer includes
  defaults that it can't parse to a ruby object unless a database-
  specific dump is requested.

* The schema_dumper extension now dumps tables in alphabetical order.

* Ordered and limited datasets are now handled correctly when using
  union, intersect, and except.  Also, union, intersect, and except
  now always return a from_self dataset, so further limiting,
  filtering, and ordering of them now works as expected.

* Dataset#graph now works correctly with a complex dataset without
  having to use from_self.  Before, code like the following didn't
  do what was expected:

    DB[:albums].
      graph(DB[:artists].filter{name > 'M'}, :id=>:artist_id)

  Before, the filter on DB[:artists] would be dropped.  Now, Sequel
  correctly uses a subselect.

* You can now specify serialization formats per column in the
  serialization plugin, either by calling the plugin multiple
  times or by using the new serialize_attributes method:

    Album.plugin :serialization
    Album.serialize_attributes :marshal, :review
    Album.serialize_attributes :yaml, :name
    Album.serialization_map #{:name=>:yaml, :review=>:marshal}

  The public API for the serialization plugin is still backwards
  compatible, but the internals have changed slightly to support
  this new feature.

* You can now use eager_graph to eagerly load associations for models
  that lack primary keys.

* The :eager_graph association option now works when lazily-loading
  many_to_many associations.

* Dataset#add_graph_aliases now works correctly even if
  set_graph_aliases hasn't been used.

* The PostgreSQL Database#tables method now assumes the public schema
  if a schema is not given and there is no default_schema.

* The PostgreSQL Database#indexes method no longer returns partial
  indexes or functional indexes.

* The MySQL Database#indexes method no longer returns indexes on
  partial columns (prefix indexes).

* Default values for String :text=>true and File columns on MySQL
  are ignored, since MySQL doesn't support them.  They are not
  ignored if you use text and blob, since then you are using the
  database-specific syntax and Sequel doesn't do translation when
  the database-specific syntax is used.

* On PostgreSQL, attempting the reset the primary key sequence for a
  table without a primary key no longer causes an error.

* Using a placeholder string in an association's :condition option
  now works correctly (e.g. :conditions=>['n = ?', 1])

* An error is no longer raised if you attempt to load a plugin that
  has a DatasetMethods module but no public dataset methods.

* The check for dataset[n] where n is an integer was fixed.  It now
  raises an error inside of returning a limited dataset.

* On PostgreSQL, Dataset#insert with static SQL now works correctly.

* A reflection.rdoc file was added giving an overview of Sequel's
  reflection support.

* The Migrator now works correctly with file names like
  001_12312412_file_name.rb.

* The association code now requires the classes match when looking
  for a reciprocal association.

* An unlikely threading bug (race condition) was possible when using
  the validation_class_methods plugin. The plugin was refactored and
  now uses a mutex to avoid the issue.  One of the refactoring changes
  makes it so that you can no longer use a class level vaildation
  inside a Class.new block (since inherited isn't called until the
  block finishes).

* The exception messages when Sequel.string_to_* fail have been fixed.

* The String :text=>true generic database type has been fixed when
  using the Firebird adapter.

Backwards Compatibility
-----------------------

* A plugin's apply method is now only called the first time a plugin
  is loaded.  Plugins can now have a configure method that is called
  every time the plugin is loaded, and is always called after the
  instance methods, class methods, and dataset method submodules have
  been added to the model.  This is different from apply, which is
  called before the submodules are loaded.

  If you are a plugin author, please check your implementation to
  make sure this doesn't cause problems for you.  If you have
  questions, please post on the Sequel mailing list.

  This new plugin feature will make certain things a lot easier, and
  it should be mostly backwards compatible.  However, if a plugin
  was previously expected to be loaded multiple times with the apply
  method called each time, it will no longer work correctly.

* The plugin_opts methods defined now include multiple args in an
  array if multiple args are given.  Before, the plugin_opts methods
  just returned the first argument.

* Database#table_exists? no longer checks the cached schema
  information.  By default, it will always do a database query
  (unless overridden in an adapter).  This shouldn't affect the
  results, but if were using the method a lot and expecting it to
  use cached information, it doesn't have the same performance
  characteristics.

* The internal storage of the :select option for datasets have
  changed.  You can no longer use a hash as a way of aliasing
  columns.  Dataset#select now does the translation from the hash to
  SQL::AliasedExpression instances.  Basically, if you were using
  Dataset#clone directly with a :select option with hashes for
  aliasing, you should switch to using Dataset#select or changing
  the hashes to AliasedExpressions yourself.

Thanks,
Jeremy

* {Website}[http://sequel.rubyforge.org]
* {Source code}[http://github.com/jeremyevans/sequel]
* {Bug tracking}[http://code.google.com/p/ruby-sequel/issues/list]
* {Google group}[http://groups.google.com/group/sequel-talk]
* {RDoc}[http://sequel.rubyforge.org/rdoc]
-- 
Posted via http://www.ruby-forum.com/.

In This Thread

Prev Next