Thanks Jeremy. Been using Sequel for aa number of years now. I've never 
seen such a well maintained and professionally developed gem as Sequel. It 
certainly instils confidence as a user.

On Saturday, 2 September 2017 11:18:59 UTC+10, Jeremy Evans wrote:
>
> Sequel 5.0.0 has been released!
>
> = Major Changes
>
> * Datasets are now frozen by default.  Since Sequel's inception,
>   datasets have used a method-chaining API that returned modified
>   copies, but previously they still supported direct mutation.  Now,
>   datasets are always frozen and cannot be mutated. This allows many
>   additional default optimizations related to caching, and provides
>   greater thread safety.
>
>     ds = DB[:table]
>
>     # Before
>     ds.row_proc = lambda{|h| h}
>
>     # Now
>     ds = ds.with_row_proc(lambda{|h| h})
>
> * Symbol splitting to create qualified and/or aliased identifiers is
>   now disabled by default.  While symbol splitting allowed for shorter
>   code, it was not obvious and caused significant issues when using
>   column names with embedded double or triple underscores.  Sequel now
>   offers many ways to create qualified and/or aliased identifiers.
>
>     # Before
>     :table__column          # "table"."column"
>
>     # Now
>     :table__column          # "table__column"
>     Sequel[:table][:column] # "table"."column"
>
>     # To get back historical behavior
>     Sequel.split_symbols = true
>
> * Sequel no longer allows the use of plain ruby strings as SQL code
>   fragments in the dataset filtering methods, as that makes it
>   easier to introduce SQL injection vulnerabilities.  You can use
>   Sequel.lit to create literal strings (SQL code fragments), which
>   makes it easier to do security auditing of applications using
>   Sequel.
>
>     # Before
>     DB[:table].where("column = 1").all
>
>     # Now 
>     DB[:table].where(Sequel.lit("column = 1")).all
>     # or better
>     DB[:table].where(column: 1).all
>
>     # To get back historical behavior
>     DB.extension :auto_literal_strings
>
> = Backwards Compatibility
>
> * All adapters, extensions, plugins, features, and constants
>   deprecated in 4.49.0 have been removed.  Before upgrading to Sequel
>   5.0.0, upgrade to 4.49.0 and fix all deprecation warnings.
>
> * Support for ruby 1.8.7 has been dropped, the minimum ruby version is
>   now 1.9.2.
>
> * The {before,after,around}_validation hooks are now always called
>   when saving, even if the validate: false option is used.  This
>   allows you to use the before_validation hook to make changes
>   to the model instance that are required before validation and
>   before saving even if not validating.
>
> * Getting column values for newly created model instances after
>   insertion now happens before after_create is called, instead of
>   after.
>
> * Sequel now immediately attempts to the connect to the database
>   when a Database instance is created, in order to fail fast if the
>   connection parameters are invalid.
>
> * The validates_unique method in the validation_helpers plugin
>   now only checks for uniqueness by default if the record is new or
>   one of the related columns has been modified by default.
>
> * Database schema modification methods and schema generator methods
>   now return nil instead of some internal value.
>
> * Many cases where Sequel used Kernel#send internally have been
>   switched to Kernel#public_send so they only call public methods.
>
> * Model association hooks are now nil instead of empty arrays by
>   default.
>
> * Internal uses of instance_eval with a block have been changed to
>   instance_exec.  This allows them to be used with lambdas that
>   take no arguments.
>
> * Most internal constants are now frozen, unless there is a
>   requirement that they be modified at runtime.
>   
> * The Model @was_new instance variable is now no longer set when
>   saving new model instances.
>
> * The private Sequel::Postgres::PGArray::Parser#new_entry_buffer
>   method in the pg_array extension has been removed.
>
> * Modifying Model.input_transformer_order in the input_transformer
>   plugin no longer has an effect.
>
> = New Features
>
> * Database#add_index :if_not_exists option is now supported on
>   PostgreSQL 9.5+.
>
> * SQL::Subscript#expression has been added to retrieve the
>   expression that is subscripted.
>
> = Other Improvements
>
> * Threaded connection pools no longer block while new connections
>   are being made.  Previously, attempting to establish a new
>   connection blocked all connection pool activity until the new
>   connection was made.
>
> * Many minor performance improvements have been made.
>
> * The class_table_inheritance plugin now raises an error during
>   Model#update if a query does not modify a single row, just as
>   the default Model#update does.
>
> * ConnectionPool#size is now thread-safe in both threaded
>   connection pools. Internal callers that already have the
>   connection pool mutex should switch to using #_size (a new
>   private method).
>
> * Registration of new serialization formats in the serialization
>   plugin is now thread-safe.
>
> * If transactional schema modifications are not supported, a
>   savepoint will not automatically be created when adding
>   indexes for new tables inside transactions.  This fixes issues
>   when making schema changes inside transactions on MySQL.
>
> * Attempting to create a prepared statement using a dataset that
>   uses a delayed evaluation now raises an error, because the
>   prepared statement would not respect the delayed evaluation.
>
> * The bin/sequel -M option now uses base 10.  Previously, it
>   used the Kernel#Integer default, which was base 8 if there was
>   a preceding 0.
>
> = Deprecated Features
>
> These deprecated features will be removed in Sequel 5.1.0.
>
> * Model.allowed_columns in the base plugin is now deprecated. Use
>   the whitelist_security plugin if you want to call it.
>
> * Model use_after_commit_rollback class and instance accessors are
>   now deprecated.
>
> * Defining the Model#_before_validation method is now deprecated.
>   You can change to using before_validation.
>
> * The private Model.plugin_module_defined? method is now deprecated.
>
> Thanks,
> Jeremy
>

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to